From 2ecfc3f82ac138d3dbe12970f4ed8d9cd19fbbb4 Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sat, 30 Oct 2021 11:41:06 -0300 Subject: [PATCH 1/7] corrigindo ArmazemController e SetorController pendente da PR do representante --- .../controller/ArmazemController.java | 4 +--- .../controller/SetorController.java | 16 ++++++++-------- .../model/dtos/request/ArmazemForm.java | 5 +---- .../model/dtos/request/SetorForm.java | 8 ++++---- .../model/dtos/response/ArmazemDTO.java | 8 ++++---- .../model/dtos/response/SetorDTO.java | 8 +++----- .../com/bootcamp_w3_g3/model/entity/Armazem.java | 3 +-- .../com/bootcamp_w3_g3/model/entity/Setor.java | 2 +- .../bootcamp_w3_g3/service/ArmazemService.java | 5 +++-- .../com/bootcamp_w3_g3/service/SetorService.java | 10 +++++----- .../service/ArmazemServiceUnitTest.java | 2 +- .../bootcamp_w3_g3/service/SetorUnitTest.java | 2 +- 12 files changed, 33 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java b/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java index 1f4391cc..6a92757d 100644 --- a/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java +++ b/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java @@ -23,12 +23,10 @@ public class ArmazemController { @Autowired private RepresentanteService representanteService; - @Autowired - private SetorService setorService; @PostMapping("/criar") public ResponseEntity criarArmazem(@RequestBody ArmazemForm armazemForm) { - Armazem armazem = armazemService.criarArmazem(armazemForm.converte(representanteService, setorService)); + Armazem armazem = armazemService.criarArmazem(armazemForm.converte(representanteService)); return new ResponseEntity<>(ArmazemDTO.converter(armazem), HttpStatus.CREATED); } diff --git a/src/main/java/com/bootcamp_w3_g3/controller/SetorController.java b/src/main/java/com/bootcamp_w3_g3/controller/SetorController.java index cf82fe87..610aac17 100644 --- a/src/main/java/com/bootcamp_w3_g3/controller/SetorController.java +++ b/src/main/java/com/bootcamp_w3_g3/controller/SetorController.java @@ -16,7 +16,7 @@ * @author hugo damm */ @RestController -@RequestMapping("setor") +@RequestMapping("setor/") public class SetorController { @Autowired @@ -31,22 +31,22 @@ public ResponseEntity salvar(@RequestBody SetorForm setorForm){ return new ResponseEntity<>(SetorDTO.converter(setor), HttpStatus.CREATED); } - @DeleteMapping("/remover") - public String remover(@PathVariable String codigo) { - setorService.removerSetor(codigo); + @DeleteMapping("/remover/{id}") + public String remover(@PathVariable Long id) { + setorService.removerSetor(id); return "Setor removido"; } - @GetMapping("/obter/{id}") + @GetMapping("/obter/{codigo}") public ResponseEntity obter(@PathVariable String codigo){ Setor setor = setorService.obterSetor(codigo); return new ResponseEntity<>(SetorDTO.converter(setor), HttpStatus.OK); } - @GetMapping("/listar") - public ResponseEntity> listar(){ - List setores = setorService.listarSetores(); + @GetMapping("/listar/{armazem_id}") + public ResponseEntity> listar(@PathVariable Long armazem_id){ + List setores = setorService.lista(armazem_id); return new ResponseEntity<>(SetorDTO.converterLista(setores), HttpStatus.OK); } diff --git a/src/main/java/com/bootcamp_w3_g3/model/dtos/request/ArmazemForm.java b/src/main/java/com/bootcamp_w3_g3/model/dtos/request/ArmazemForm.java index 7a8e1ed4..9915c4b9 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/dtos/request/ArmazemForm.java +++ b/src/main/java/com/bootcamp_w3_g3/model/dtos/request/ArmazemForm.java @@ -2,14 +2,11 @@ import com.bootcamp_w3_g3.model.entity.Armazem; import com.bootcamp_w3_g3.model.entity.Representante; -import com.bootcamp_w3_g3.model.entity.Setor; import com.bootcamp_w3_g3.service.RepresentanteService; import com.bootcamp_w3_g3.service.SetorService; import lombok.*; -import java.util.ArrayList; -import java.util.List; @AllArgsConstructor @NoArgsConstructor @@ -25,7 +22,7 @@ public class ArmazemForm { private String uf; private RepresentanteForm representanteForm; - public Armazem converte(RepresentanteService representanteService, SetorService setorService) { + public Armazem converte(RepresentanteService representanteService) { Representante representante = representanteService.obter(representanteForm.getCodigo()); return Armazem.builder() diff --git a/src/main/java/com/bootcamp_w3_g3/model/dtos/request/SetorForm.java b/src/main/java/com/bootcamp_w3_g3/model/dtos/request/SetorForm.java index 21552d04..86903c94 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/dtos/request/SetorForm.java +++ b/src/main/java/com/bootcamp_w3_g3/model/dtos/request/SetorForm.java @@ -7,10 +7,10 @@ import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.List; /** * @author hugo damm + * @autor Joaquim Borges */ @NoArgsConstructor @@ -24,10 +24,9 @@ public class SetorForm { private String tipoProduto; private ArmazemForm armazem; private Integer espacoDisponivel = 100; - private List lote; - //private List lote; + public Setor converte(ArmazemService armazemService){ Armazem armazem = armazemService.obterArmazem(this.armazem.getCodArmazem()); @@ -35,7 +34,8 @@ public Setor converte(ArmazemService armazemService){ .codigo(codigo) .nome(nome) .tipoProduto(tipoProduto) - .armazem(armazem).build(); + .armazem(armazem) + .build(); } diff --git a/src/main/java/com/bootcamp_w3_g3/model/dtos/response/ArmazemDTO.java b/src/main/java/com/bootcamp_w3_g3/model/dtos/response/ArmazemDTO.java index ef3b6dff..030ce7d3 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/dtos/response/ArmazemDTO.java +++ b/src/main/java/com/bootcamp_w3_g3/model/dtos/response/ArmazemDTO.java @@ -21,7 +21,7 @@ public class ArmazemDTO { private String nome; private String endereco; private String uf; - private Representante representante; + private RepresentanteDTO representanteDTO; public static ArmazemDTO converter(Armazem armazem) { @@ -30,7 +30,8 @@ public static ArmazemDTO converter(Armazem armazem) { armazem.getNome(), armazem.getEndereco(), armazem.getUf(), - armazem.getRepresentante() + RepresentanteDTO.converteEmRepresentanteDTO(armazem.getRepresentante()) + ); } @@ -38,7 +39,6 @@ public static ArmazemDTO converter(Armazem armazem) { public static List armazemDTOListConverte(List armazemList) { List armazemDTOList = new ArrayList<>(); - for (Armazem armazem : armazemList) { armazemDTOList.add( @@ -47,7 +47,7 @@ public static List armazemDTOListConverte(List armazemList) armazem.getNome(), armazem.getEndereco(), armazem.getUf(), - armazem.getRepresentante() + RepresentanteDTO.converteEmRepresentanteDTO(armazem.getRepresentante()) ) ); } diff --git a/src/main/java/com/bootcamp_w3_g3/model/dtos/response/SetorDTO.java b/src/main/java/com/bootcamp_w3_g3/model/dtos/response/SetorDTO.java index fe2a62f8..4ff90f4d 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/dtos/response/SetorDTO.java +++ b/src/main/java/com/bootcamp_w3_g3/model/dtos/response/SetorDTO.java @@ -19,15 +19,14 @@ public class SetorDTO { private String codigo; private String nome; private String tipoProduto; - private Armazem armazem; - private List lote; + private ArmazemDTO armazemDTO; public static SetorDTO converter(Setor setor){ return SetorDTO.builder() .codigo(setor.getCodigo()) .nome(setor.getNome()) .tipoProduto(setor.getTipoProduto()) - .armazem(setor.getArmazem()).build(); + .armazemDTO(ArmazemDTO.converter(setor.getArmazem())).build(); } public static List converterLista(List setorList){ @@ -37,8 +36,7 @@ public static List converterLista(List setorList){ .codigo(setor.getCodigo()) .nome(setor.getNome()) .tipoProduto(setor.getTipoProduto()) - .armazem(setor.getArmazem()) - .build()); + .armazemDTO(ArmazemDTO.converter(setor.getArmazem())).build()); } return setorDTOList; } diff --git a/src/main/java/com/bootcamp_w3_g3/model/entity/Armazem.java b/src/main/java/com/bootcamp_w3_g3/model/entity/Armazem.java index 01d7cb8c..12dbc6fb 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/entity/Armazem.java +++ b/src/main/java/com/bootcamp_w3_g3/model/entity/Armazem.java @@ -14,8 +14,7 @@ import javax.persistence.*; -import java.util.ArrayList; -import java.util.List; + @Getter @Setter diff --git a/src/main/java/com/bootcamp_w3_g3/model/entity/Setor.java b/src/main/java/com/bootcamp_w3_g3/model/entity/Setor.java index b23d9fe3..963508f5 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/entity/Setor.java +++ b/src/main/java/com/bootcamp_w3_g3/model/entity/Setor.java @@ -5,7 +5,7 @@ import javax.persistence.*; -import java.util.List; + /** * @author hugo damm diff --git a/src/main/java/com/bootcamp_w3_g3/service/ArmazemService.java b/src/main/java/com/bootcamp_w3_g3/service/ArmazemService.java index 68cf35a5..5ea413bf 100644 --- a/src/main/java/com/bootcamp_w3_g3/service/ArmazemService.java +++ b/src/main/java/com/bootcamp_w3_g3/service/ArmazemService.java @@ -37,8 +37,9 @@ public Armazem obterArmazem(String cod) { return armazemRepository.findByCodArmazem(cod); } - public Armazem deletarArmazem(String cod){ - return armazemRepository.deleteByCodArmazem(cod); + public Armazem deletarArmazem(Long id){ + armazemRepository.deleteById(id); + return null; } public Armazem atualizarArmazem(Armazem armazem) { diff --git a/src/main/java/com/bootcamp_w3_g3/service/SetorService.java b/src/main/java/com/bootcamp_w3_g3/service/SetorService.java index 0b623f26..b35b5d00 100644 --- a/src/main/java/com/bootcamp_w3_g3/service/SetorService.java +++ b/src/main/java/com/bootcamp_w3_g3/service/SetorService.java @@ -35,8 +35,8 @@ public Setor get(Long id){ } public Setor obterSetor(String codigo){ - Setor setor = setorRepository.findByCodigo(codigo); - return setor; + return setorRepository.findByCodigo(codigo); + } public List listarSetores(){ @@ -51,7 +51,6 @@ public List lista(Long armazemId){ public Setor atualizarSetor(Setor setor){ Setor editedSetor = setorRepository.findByCodigo(setor.getCodigo()); - editedSetor.setCodigo(setor.getCodigo()); editedSetor.setNome(setor.getNome()); editedSetor.setTipoProduto(setor.getTipoProduto()); editedSetor.setArmazem(setor.getArmazem()); @@ -59,8 +58,9 @@ public Setor atualizarSetor(Setor setor){ return setorRepository.save(editedSetor); } - public Setor removerSetor(String codigo) { - return setorRepository.deleteByCodigo(codigo); + public Setor removerSetor(Long id) { + setorRepository.deleteById(id); + return null; } } diff --git a/src/test/java/com/bootcamp_w3_g3/service/ArmazemServiceUnitTest.java b/src/test/java/com/bootcamp_w3_g3/service/ArmazemServiceUnitTest.java index 46122444..ed3bda22 100644 --- a/src/test/java/com/bootcamp_w3_g3/service/ArmazemServiceUnitTest.java +++ b/src/test/java/com/bootcamp_w3_g3/service/ArmazemServiceUnitTest.java @@ -80,7 +80,7 @@ void deletarArmazemTest() { Mockito.when(armazemRepository.deleteByCodArmazem(Mockito.any(String.class))).thenReturn(null); armazemService = new ArmazemService(armazemRepository); - Armazem armazemDeletado = armazemService.deletarArmazem(armazem1.getCodArmazem()); + Armazem armazemDeletado = armazemService.deletarArmazem(armazem1.getId()); assertNull(armazemDeletado); diff --git a/src/test/java/com/bootcamp_w3_g3/service/SetorUnitTest.java b/src/test/java/com/bootcamp_w3_g3/service/SetorUnitTest.java index af441a91..7e58fda4 100644 --- a/src/test/java/com/bootcamp_w3_g3/service/SetorUnitTest.java +++ b/src/test/java/com/bootcamp_w3_g3/service/SetorUnitTest.java @@ -116,7 +116,7 @@ void removerSetorTest() { Mockito.when(setorRepository.deleteByCodigo(Mockito.any(String.class))).thenReturn(null); setorService = new SetorService(setorRepository); - Setor setorDeletado = setorService.removerSetor(setor1.getCodigo()); + Setor setorDeletado = setorService.removerSetor(setor1.getId()); assertNull(setorDeletado); } From 07800afb51255ec2e5dacee7129062d1a3f424a4 Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 10:34:02 -0300 Subject: [PATCH 2/7] application.properties --- src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 99ea3b1b..795fcbad 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,7 +4,7 @@ spring.datasource.url=jdbc:postgresql://localhost:5432/armazem-w3 spring.datasource.username= postgres spring.datasource.password= lUk3nyb@ -spring.jpa.hibernate.ddl-auto=update +spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect From dc944900c82d0e784bffd1c509bfaee54223b0b2 Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 11:28:36 -0300 Subject: [PATCH 3/7] testes manuais das classes Produto, Armazem, Setor e Lote concluidos, refatoracao! --- .../java/com/bootcamp_w3_g3/controller/ArmazemController.java | 3 +-- .../com/bootcamp_w3_g3/controller/RepresentanteController.java | 2 +- .../java/com/bootcamp_w3_g3/model/entity/Representante.java | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java b/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java index 6a92757d..06bf905a 100644 --- a/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java +++ b/src/main/java/com/bootcamp_w3_g3/controller/ArmazemController.java @@ -5,7 +5,6 @@ import com.bootcamp_w3_g3.model.entity.Armazem; import com.bootcamp_w3_g3.service.ArmazemService; import com.bootcamp_w3_g3.service.RepresentanteService; -import com.bootcamp_w3_g3.service.SetorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -14,7 +13,7 @@ import java.util.List; @RestController -@RequestMapping("armazem") +@RequestMapping("armazem/") public class ArmazemController { @Autowired diff --git a/src/main/java/com/bootcamp_w3_g3/controller/RepresentanteController.java b/src/main/java/com/bootcamp_w3_g3/controller/RepresentanteController.java index 8fa1db71..7e9fe655 100644 --- a/src/main/java/com/bootcamp_w3_g3/controller/RepresentanteController.java +++ b/src/main/java/com/bootcamp_w3_g3/controller/RepresentanteController.java @@ -13,7 +13,7 @@ import java.util.NoSuchElementException; @RestController -@RequestMapping("representante") +@RequestMapping("representante/") public class RepresentanteController { @Autowired diff --git a/src/main/java/com/bootcamp_w3_g3/model/entity/Representante.java b/src/main/java/com/bootcamp_w3_g3/model/entity/Representante.java index d24921bb..a1425800 100644 --- a/src/main/java/com/bootcamp_w3_g3/model/entity/Representante.java +++ b/src/main/java/com/bootcamp_w3_g3/model/entity/Representante.java @@ -17,7 +17,7 @@ @Getter @Setter @Entity -@SuperBuilder +@Builder @NoArgsConstructor @AllArgsConstructor public class Representante { From b4443abaaae215ffb9c0bf04e53f4f9d75039241 Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 12:18:51 -0300 Subject: [PATCH 4/7] testes de intregracao ProdutoController finalizado --- .../controller/ProdutoController.java | 5 +- .../controller/ProdutoIntegrationTest.java | 134 ++++++++++++++++++ 2 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java diff --git a/src/main/java/com/bootcamp_w3_g3/controller/ProdutoController.java b/src/main/java/com/bootcamp_w3_g3/controller/ProdutoController.java index d1a3c418..612d6aab 100644 --- a/src/main/java/com/bootcamp_w3_g3/controller/ProdutoController.java +++ b/src/main/java/com/bootcamp_w3_g3/controller/ProdutoController.java @@ -63,9 +63,10 @@ public ResponseEntity alterar(@RequestBody ProdutoForm produtoForm) * @return produtoDTO */ @DeleteMapping(value="/deletar/{cod}") - public Produto apagar(@PathVariable Long cod) + public ResponseEntity apagar(@PathVariable Long cod) { - return produtoService.apagar(cod); + produtoService.apagar(cod); + return new ResponseEntity<>(HttpStatus.OK); } /** diff --git a/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java b/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java new file mode 100644 index 00000000..bc4339dd --- /dev/null +++ b/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java @@ -0,0 +1,134 @@ +package com.bootcamp_w3_g3.controller; + +import com.bootcamp_w3_g3.model.dtos.request.ProdutoForm; +import com.bootcamp_w3_g3.model.entity.Produto; +import com.bootcamp_w3_g3.service.ProdutoService; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.hamcrest.Matchers.is; + +import java.math.BigDecimal; + +/** + * @autor Joaquim Borges + */ +@SpringBootTest +@AutoConfigureMockMvc +public class ProdutoIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private ProdutoService produtoService; + + private static ObjectMapper objectMapper; + + @BeforeAll + static void setup() { + objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + } + + private ProdutoForm payloadProduto() { + return ProdutoForm.builder() + .codigoDoProduto(1234) + .nome("carne seca") + .preco(new BigDecimal(50)) + .temperaturaIndicada(16.0) + .build(); + } + + private ProdutoForm PersisteProduto(ProdutoForm produtoForm) { + Produto novoProduto = Produto.builder() + .codigoDoProduto(produtoForm.getCodigoDoProduto()) + .nome(produtoForm.getNome()) + .build(); + this.produtoService.salvar(novoProduto); + return ProdutoForm.builder() + .codigoDoProduto(novoProduto.getCodigoDoProduto()) + .temperaturaIndicada(null) + .preco(new BigDecimal(60)).build(); + } + + private Produto converte(ProdutoForm produtoForm) { + return Produto.builder() + .codigoDoProduto(produtoForm.getCodigoDoProduto()) + .nome(produtoForm.getNome()) + .preco(produtoForm.getPreco()) + .temperaturaIndicada(produtoForm.getTemperaturaIndicada()).build(); + } + + + @Test + void deveCadastrarUmProduto() throws Exception { + ProdutoForm produto = payloadProduto(); + String requestPayload = objectMapper.writeValueAsString(produto); + + this.mockMvc.perform(post("http://localhost:8080/produtos/cadastra") + .contentType(MediaType.APPLICATION_JSON) + .content(requestPayload)) + .andExpect(status().isCreated()); + } + + + @Test + void deveObterUmProdutoCadastrado() throws Exception { + ProdutoForm produto = ProdutoForm.builder() + .codigoDoProduto(1234) + .nome("carne seca") + .preco(new BigDecimal(50)) + .temperaturaIndicada(16.0) + .build(); + + this.PersisteProduto(produto); + + this.mockMvc.perform(get("http://localhost:8080/produtos/obter/" + produto.getCodigoDoProduto())) + .andExpect(status().isOk()); + } + + + @Test + void deveAlterarDadosDeUmProduto() throws Exception { + ProdutoForm produto = this.payloadProduto(); + + this.PersisteProduto(produto); + + ProdutoForm produtoAlterado = ProdutoForm.builder() + .codigoDoProduto(1234) + .nome("carne de sol") + .preco(new BigDecimal(50)) + .temperaturaIndicada(16.0) + .build(); + + String payloadRequest = objectMapper.writeValueAsString(produtoAlterado); + this.mockMvc.perform(put("http://localhost:8080/produtos/alterar") + .contentType(MediaType.APPLICATION_JSON) + .content(payloadRequest)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.nome", is(produtoAlterado.getNome()))); + } + + + + @Test + void deveApagarUmProduto() throws Exception { + ProdutoForm produtoForm = this.payloadProduto(); + Produto produto = this.converte(produtoForm); + this.produtoService.salvar(produto); + + this.mockMvc.perform(delete("http://localhost:8080/produtos/deletar/" + produto.getId())) + .andExpect(status().isOk()); + } +} From 09ca5ec4bf285dacc653dcec628f994879dc63a0 Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 12:50:19 -0300 Subject: [PATCH 5/7] testes de intregracao Representante controller finalizado --- .../service/RepresentanteService.java | 2 + .../controller/ProdutoIntegrationTest.java | 18 ++- .../controller/RepresentanteIntTest.java | 152 ++++++++++++++++++ 3 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/bootcamp_w3_g3/controller/RepresentanteIntTest.java diff --git a/src/main/java/com/bootcamp_w3_g3/service/RepresentanteService.java b/src/main/java/com/bootcamp_w3_g3/service/RepresentanteService.java index 0633e24a..e0c7d48a 100644 --- a/src/main/java/com/bootcamp_w3_g3/service/RepresentanteService.java +++ b/src/main/java/com/bootcamp_w3_g3/service/RepresentanteService.java @@ -38,6 +38,8 @@ public List listar() { public Representante atualizar(Representante representante) { Representante representanteEdited = representanteRepository.getByCodigo(representante.getCodigo()); + representanteEdited.setNome(representante.getNome()); + representanteEdited.setSobrenome(representante.getSobrenome()); representanteEdited.setTelefone(representante.getTelefone()); representanteEdited.setEndereco(representante.getEndereco()); diff --git a/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java b/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java index bc4339dd..61313694 100644 --- a/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java +++ b/src/test/java/com/bootcamp_w3_g3/controller/ProdutoIntegrationTest.java @@ -70,7 +70,10 @@ private Produto converte(ProdutoForm produtoForm) { .temperaturaIndicada(produtoForm.getTemperaturaIndicada()).build(); } - + /** + * teste deve cadastrar um produto caso + * o payload seja valido + */ @Test void deveCadastrarUmProduto() throws Exception { ProdutoForm produto = payloadProduto(); @@ -82,6 +85,10 @@ void deveCadastrarUmProduto() throws Exception { .andExpect(status().isCreated()); } + /** + * teste deve obter um produto caso ele exista + * no banco de dados + */ @Test void deveObterUmProdutoCadastrado() throws Exception { @@ -99,6 +106,11 @@ void deveObterUmProdutoCadastrado() throws Exception { } + /** + * teste deve alterar dos dados de um produto + * caso ele exista no banco e o payload seja valida + * retorno comparado pelo nome + */ @Test void deveAlterarDadosDeUmProduto() throws Exception { ProdutoForm produto = this.payloadProduto(); @@ -122,6 +134,10 @@ void deveAlterarDadosDeUmProduto() throws Exception { + /** + * teste deve apagar um produto caso ele exista + * no banco de dados + */ @Test void deveApagarUmProduto() throws Exception { ProdutoForm produtoForm = this.payloadProduto(); diff --git a/src/test/java/com/bootcamp_w3_g3/controller/RepresentanteIntTest.java b/src/test/java/com/bootcamp_w3_g3/controller/RepresentanteIntTest.java new file mode 100644 index 00000000..28108aa3 --- /dev/null +++ b/src/test/java/com/bootcamp_w3_g3/controller/RepresentanteIntTest.java @@ -0,0 +1,152 @@ +package com.bootcamp_w3_g3.controller; + +import com.bootcamp_w3_g3.model.dtos.request.RepresentanteForm; +import com.bootcamp_w3_g3.model.entity.Representante; +import com.bootcamp_w3_g3.service.RepresentanteService; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.hamcrest.Matchers.is; + +/** + * @autor Joaquim Borges + */ +@SpringBootTest +@AutoConfigureMockMvc +public class RepresentanteIntTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private RepresentanteService representanteService; + + private static ObjectMapper objectMapper; + + @BeforeAll + static void setup() { + objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + } + + private RepresentanteForm payloadRepresentante(){ + return RepresentanteForm.builder() + .codigo("R-123") + .nome("Joao") + .sobrenome("Gomes") + .endereco("rua qualquer") + .cpf("123.234.345-04") + .telefone("11-2473648") + .build(); + } + + private Representante converte(RepresentanteForm representanteForm){ + return Representante.builder() + .nome(representanteForm.getNome()) + .sobrenome(representanteForm.getSobrenome()) + .cpf(representanteForm.getCpf()) + .telefone(representanteForm.getTelefone()) + .endereco(representanteForm.getEndereco()) + .codigo(representanteForm.getCodigo()).build(); + } + + private void persisteRepresentante(RepresentanteForm representanteForm) { + Representante representante = Representante.builder() + .nome(representanteForm.getNome()) + .sobrenome(representanteForm.getSobrenome()) + .cpf(representanteForm.getCpf()) + .telefone(representanteForm.getTelefone()) + .endereco(representanteForm.getEndereco()) + .codigo(representanteForm.getCodigo()).build(); + + this.representanteService.salvar(representante); + } + + /** + * teste deve salvar um representante se o + * payload estiver valido. + */ + + @Test + void deveSalvarRepresentante() throws Exception { + RepresentanteForm representante = this.payloadRepresentante(); + String requestPayload = objectMapper.writeValueAsString(representante); + + this.mockMvc.perform(post("http://localhost:8080/representante/salvar") + .contentType(MediaType.APPLICATION_JSON) + .content(requestPayload)) + .andExpect(status().isCreated()); + } + + /** + * teste deve obter um representante caso dele + * exista no banco de dados. + */ + + @Test + void deveObterUmRepresentante() throws Exception { + RepresentanteForm representanteForm = this.payloadRepresentante(); + this.persisteRepresentante(representanteForm); + + this.mockMvc.perform(get("http://localhost:8080/representante/obter/" + representanteForm.getCodigo())) + .andExpect(status().isOk()); + } + + /** + * teste deve alterar os dados do representante caso o + * payload seja valido e tenha o mesmo codigo de registro + */ + + @Test + void deveAlterarDadosDoRepresentante() throws Exception { + + RepresentanteForm representanteForm = this.payloadRepresentante(); + this.persisteRepresentante(representanteForm); + + RepresentanteForm representanteAlterado = RepresentanteForm.builder() + .codigo("R-123") + .nome("Jose") + .sobrenome("Gomes") + .endereco("rua qualquer") + .cpf("123.234.345-04") + .telefone("11-2473648") + .build(); + + String requestPayload = objectMapper.writeValueAsString(representanteAlterado); + this.mockMvc.perform(put("http://localhost:8080/representante/alterar") + .contentType(MediaType.APPLICATION_JSON) + .content(requestPayload)) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.nome", is(representanteAlterado.getNome()))); + + } + + /** + * teste deve apagar um representante caso ele + * exista no banco de dados. + */ + + @Test + void deveApagarUmRepresentante() throws Exception { + RepresentanteForm representanteForm = this.payloadRepresentante(); + Representante representante = this.converte(representanteForm); + this.representanteService.salvar(representante); + + this.mockMvc.perform(delete("http://localhost:8080/representante/delete/" + representante.getId())) + .andExpect(status().isOk()); + } + + + + + +} From eb13d55c78117b8a671b71ccd24a8a0f7735150b Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 13:48:18 -0300 Subject: [PATCH 6/7] testes de intregracao armazem controller finalizado --- .../controller/ArmazemIntegrationTest.java | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java diff --git a/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java b/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java new file mode 100644 index 00000000..8a1a8da3 --- /dev/null +++ b/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java @@ -0,0 +1,145 @@ +package com.bootcamp_w3_g3.controller; + +import com.bootcamp_w3_g3.model.dtos.request.ArmazemForm; +import com.bootcamp_w3_g3.model.dtos.request.RepresentanteForm; +import com.bootcamp_w3_g3.model.entity.Armazem; +import com.bootcamp_w3_g3.model.entity.Representante; +import com.bootcamp_w3_g3.service.ArmazemService; +import com.bootcamp_w3_g3.service.RepresentanteService; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import static org.hamcrest.Matchers.is; + +/** + * @autor Joaquim Borges + */ +@SpringBootTest +@AutoConfigureMockMvc +public class ArmazemIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private ArmazemService armazemService; + + @Autowired + private RepresentanteService representanteService; + + private static ObjectMapper objectMapper; + + @BeforeAll + static void setup() { + objectMapper = new ObjectMapper(); + objectMapper.registerModule(new JavaTimeModule()); + } + + private RepresentanteForm payloadRepresentante(){ + return RepresentanteForm.builder() + .codigo("R-123") + .nome("Joao") + .sobrenome("Gomes") + .endereco("rua qualquer") + .cpf("123.234.345-04") + .telefone("11-2473648") + .build(); + } + + private void persisteRepresentante(RepresentanteForm representanteForm) { + Representante representante = Representante.builder() + .nome(representanteForm.getNome()) + .sobrenome(representanteForm.getSobrenome()) + .cpf(representanteForm.getCpf()) + .telefone(representanteForm.getTelefone()) + .endereco(representanteForm.getEndereco()) + .codigo(representanteForm.getCodigo()).build(); + + this.representanteService.salvar(representante); + } + + private ArmazemForm payloadArmazem() { + RepresentanteForm representanteForm = this.payloadRepresentante(); + this.persisteRepresentante(representanteForm); + + return ArmazemForm.builder() + .codArmazem("AR-212") + .nome("armazem central") + .representanteForm(representanteForm) + .endereco("qualquer lugar") + .numero(100) + .uf("SP").build(); + } + + private void persisteArmazem(ArmazemForm armazemForm, RepresentanteForm representanteForm) { + + this.persisteRepresentante(representanteForm); + + Representante representante = this.representanteService.obter(representanteForm.getCodigo()); + + Armazem armazem = Armazem.builder() + .codArmazem(armazemForm.getCodArmazem()) + .nome(armazemForm.getNome()) + .representante(representante) + .endereco(armazemForm.getEndereco()) + .uf(armazemForm.getUf()) + .build(); + + this.armazemService.criarArmazem(armazem); + } + + + + + /** + * teste deve cadastrar um armazem se o payload estiver valido + * e se o representante já estiver cadastrado no banco de dados + */ + @Test + void deveCadastrarUmArmazem() throws Exception { + + ArmazemForm armazem = this.payloadArmazem(); + String requestPayload = objectMapper.writeValueAsString(armazem); + + this.mockMvc.perform(post("http://localhost:8080/armazem/criar") + .contentType(MediaType.APPLICATION_JSON) + .content(requestPayload)) + .andExpect(status().isCreated()); + + } + + + /** + * teste deve listar todos os armazens + * cadastrados no banco de dados. + */ + @Test + void deveListarTodosOsArmazens() throws Exception { + RepresentanteForm representante = this.payloadRepresentante(); + ArmazemForm armazem = ArmazemForm.builder() + .codArmazem("AR-212") + .nome("armazem central") + .representanteForm(representante) + .endereco("qualquer lugar") + .numero(100) + .uf("SP").build(); + + this.persisteArmazem(armazem, representante); + + this.mockMvc.perform(get("http://localhost:8080/armazem/listar")) + .andExpect(status().isOk()); + + + } + + +} From 633388558808ad6307a3db7bceb9564cc1374e8a Mon Sep 17 00:00:00 2001 From: joaquimborges Date: Sun, 31 Oct 2021 13:51:00 -0300 Subject: [PATCH 7/7] ajustes ArmazemIntegrationTest --- .../com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java b/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java index 8a1a8da3..ee7429b3 100644 --- a/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java +++ b/src/test/java/com/bootcamp_w3_g3/controller/ArmazemIntegrationTest.java @@ -18,7 +18,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; -import static org.hamcrest.Matchers.is; + /** * @autor Joaquim Borges