Kata Spring Boot — Cadastro de Produtos
Implementar uma API REST de cadastro de produtos seguindo o ciclo TDD: os testes já estão escritos e falhando, seu trabalho é fazer todos eles passarem.
Requisitos
Java 21
Maven 3.8+
Como começar
# Instalar dependências e verificar que os testes estão vermelhos
mvn testVocê deve ver 15 testes falhando. Seu objetivo é chegar em 17/17 verdes sem alterar nenhum arquivo de teste.
O que implementar
1. ProdutoServiceImpl
Implemente os métodos da interface ProdutoService:
Método | O que deve fazer |
|---|---|
| Converte |
| Retorna todos os produtos como |
| Retorna o produto pelo id ou lança |
| Busca o produto, atualiza os campos e salva. Lança exceção se não encontrar |
| Remove o produto pelo id. Lança exceção se não encontrar |
2. ProdutoController
Implemente os endpoints REST. Para cada método, descomente a anotação @Operation correspondente:
Método HTTP | Rota | Status esperado |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Regras
Não altere nenhum arquivo dentro de
src/test/Não altere
ProdutoRequest,ProdutoResponse,Produto,ProdutoRepositoryouProdutoNaoEncontradoExceptionNão use IA o motivo principal é você colocar em prática os seus conhecimentos
Apenas
ProdutoServiceImpleProdutoControllerprecisam ser implementadosA solução está implementada na branch resposta
Não sabe por onde começar? leia esse artigo: https://alexsousadev.com/posts/do-zero-ao-endpoint-criando-um-crud-no-spring-boot-e-entendendo-cada-camada
Estrutura do projeto
src/
├── main/java/com/kata/produto/
│ ├── controller/ ProdutoController ← implementar
│ ├── dto/ ProdutoRequest, ProdutoResponse
│ ├── entity/ Produto
│ ├── exception/ ProdutoNaoEncontradoException
│ ├── repository/ ProdutoRepository
│ └── service/ ProdutoService (interface)
│ ProdutoServiceImpl ← implementar
└── test/java/com/kata/produto/
├── controller/ ProdutoControllerTest ← não alterar
└── service/ ProdutoServiceTest ← não alterar
Rodando os testes
# Todos os testes
mvn test
# Apenas o service
mvn test -Dtest=ProdutoServiceTest
# Apenas o controller
mvn test -Dtest=ProdutoControllerTest
# Um teste específico
mvn test -Dtest=ProdutoServiceTest#deveCriarProdutoERetornarResponseComDadosCorretosTestando a API manualmente
Após implementar, suba a aplicação e acesse o Swagger:
mvn spring-boot:runSwagger UI: http://localhost:8080/swagger-ui/index.html