From 4999090e82af3106a463c5296b6b7bc5f02062ea Mon Sep 17 00:00:00 2001 From: Felipe Date: Fri, 2 Oct 2026 14:26:12 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20retorna=20localiza=C3=A7=C3=A3o=20ao=20c?= =?UTF-8?q?riar=20ordem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: GustavoLoes --- README.md | 2 +- .../controller/OrdemServicoController.java | 10 ++++- .../OrdemServicoControllerTests.java | 42 +++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/test/java/com/exemplo/ordem_servico/controller/OrdemServicoControllerTests.java diff --git a/README.md b/README.md index 6ef4cb5..577d0f8 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ No Windows, confirme que o Java está disponível no `PATH` e execute | Método | Rota | Descrição | | --- | --- | --- | -| `POST` | `/ordens` | Cria uma ordem de serviço | +| `POST` | `/ordens` | Cria uma ordem e retorna `201 Created` com o cabeçalho `Location` | | `GET` | `/ordens?page=0&size=20&sort=cliente,asc` | Lista as ordens com paginação e ordenação | | `GET` | `/ordens?cliente=nome&page=0&size=20` | Filtra ordens pelo cliente e mantém a paginação | | `GET` | `/ordens/{id}` | Consulta uma ordem pelo ID | diff --git a/src/main/java/com/exemplo/ordem_servico/controller/OrdemServicoController.java b/src/main/java/com/exemplo/ordem_servico/controller/OrdemServicoController.java index 6b85131..28267d7 100644 --- a/src/main/java/com/exemplo/ordem_servico/controller/OrdemServicoController.java +++ b/src/main/java/com/exemplo/ordem_servico/controller/OrdemServicoController.java @@ -1,6 +1,9 @@ package com.exemplo.ordem_servico.controller; +import java.net.URI; + import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.web.PageableDefault; @@ -33,8 +36,11 @@ public OrdemServicoController(OrdemServicoService service) { } @PostMapping - public OrdemServico criar(@Valid @RequestBody OrdemServico ordem) { - return service.criar(ordem); + public ResponseEntity criar( + @Valid @RequestBody OrdemServico ordem) { + OrdemServico criada = service.criar(ordem); + URI localizacao = URI.create("/ordens/" + criada.getId()); + return ResponseEntity.created(localizacao).body(criada); } @GetMapping diff --git a/src/test/java/com/exemplo/ordem_servico/controller/OrdemServicoControllerTests.java b/src/test/java/com/exemplo/ordem_servico/controller/OrdemServicoControllerTests.java new file mode 100644 index 0000000..c75f5bf --- /dev/null +++ b/src/test/java/com/exemplo/ordem_servico/controller/OrdemServicoControllerTests.java @@ -0,0 +1,42 @@ +package com.exemplo.ordem_servico.controller; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.mockito.Mockito.when; + +import java.net.URI; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; + +import com.exemplo.ordem_servico.model.OrdemServico; +import com.exemplo.ordem_servico.service.OrdemServicoService; + +@ExtendWith(MockitoExtension.class) +class OrdemServicoControllerTests { + + @Mock + private OrdemServicoService service; + + @InjectMocks + private OrdemServicoController controller; + + @Test + void deveRetornarCreatedComLocalizacaoDaNovaOrdem() { + OrdemServico entrada = new OrdemServico(); + OrdemServico criada = new OrdemServico(); + criada.setId(7L); + when(service.criar(entrada)).thenReturn(criada); + + ResponseEntity resposta = controller.criar(entrada); + + assertEquals(HttpStatus.CREATED, resposta.getStatusCode()); + assertEquals(URI.create("/ordens/7"), resposta.getHeaders().getLocation()); + assertSame(criada, resposta.getBody()); + } +}