Como nos últimos capítulos, o curso quis terminar mais rápido não passando os exercícios para treinar os conceitos. Eu fui tentar, sem sucesso, criar um teste para a função alteraProduto. Eu gostaria de passar no POST um objeto Carrinho e um objeto Produto, mas não sei fazer o mesmo. Como seria feito?
@Path("trocaquantidade/")
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response alteraProduto(Carrinho carrinho, Produto produto) {
carrinho.trocaQuantidade(produto);
return Response.ok().build();
}
@Test
public void testaAlteraQuantidade() {
WebTarget target = client.target("http://localhost:8080");
Carrinho carrinho = new Carrinho();
Produto produto = new Produto(314L, "Caixa", 999, 4);
carrinho.adiciona(produto);
carrinho.setRua("Rua Vergueiro");
carrinho.setCidade("Sao Paulo");
Entity<Carrinho> entity = Entity.entity(carrinho, MediaType.APPLICATION_XML);
Response response = target.path("/carrinhos").request().post(entity);
Assert.assertEquals(201, response.getStatus());
if (response.getStatus() == 201) {
String location = response.getHeaderString("Location");
Carrinho carrinhoCarregado = client.target(location).request().get(Carrinho.class);
Assert.assertEquals("Microfone", carrinhoCarregado.getProdutos().get(0).getNome());
produto.setQuantidade(2);
--->Entity<Carrinho, Produto> entityEnvio = Entity.entity(produto, MediaType.APPLICATION_XML);<---
Response responseTroca = target.path("/trocaquantidade").request().post(entityEnvio);
Assert.assertEquals(200, responseTroca.getStatus());
}
}