From 5b1464a7b40c4a32630a1bca5717ca566a163d42 Mon Sep 17 00:00:00 2001 From: dobozic Date: Wed, 18 Oct 2023 11:52:07 +0200 Subject: [PATCH] PR example --- .../samples/petclinic/vet/VetController.java | 10 ++++++++++ .../samples/petclinic/vet/VetRepository.java | 3 +++ .../samples/petclinic/vet/VetControllerTests.java | 8 ++++++++ 3 files changed, 21 insertions(+) diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java b/src/main/java/org/springframework/samples/petclinic/vet/VetController.java index 3240814a6..c2177dabb 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetController.java +++ b/src/main/java/org/springframework/samples/petclinic/vet/VetController.java @@ -23,6 +23,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @@ -75,4 +76,13 @@ class VetController { return vets; } + @GetMapping({"/vets/{id}"}) + public @ResponseBody Vet getById(@PathVariable Integer id) { + if (id == null) { + throw new IllegalArgumentException("id is required"); + } + System.out.println("id: " + id); + return vetRepository.findById(id); + } + } diff --git a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java b/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java index 8b9e0823c..bd68160bf 100644 --- a/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java +++ b/src/main/java/org/springframework/samples/petclinic/vet/VetRepository.java @@ -55,4 +55,7 @@ public interface VetRepository extends Repository { @Cacheable("vets") Page findAll(Pageable pageable) throws DataAccessException; + @Transactional(readOnly = false) + Vet findById(Integer id) throws RuntimeException; + } diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java b/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java index 739ac01d8..6feb1f72e 100644 --- a/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java +++ b/src/test/java/org/springframework/samples/petclinic/vet/VetControllerTests.java @@ -72,6 +72,7 @@ class VetControllerTests { @BeforeEach void setup() { given(this.vets.findAll()).willReturn(Lists.newArrayList(james(), helen())); + given(this.vets.findById(1)).willReturn(james()); given(this.vets.findAll(any(Pageable.class))) .willReturn(new PageImpl(Lists.newArrayList(james(), helen()))); @@ -95,4 +96,11 @@ class VetControllerTests { .andExpect(jsonPath("$.vetList[0].id").value(1)); } + @Test + void testShowResourcesVet() throws Exception { + ResultActions actions = mockMvc.perform(get("/vets/1").accept(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + actions.andExpect(jsonPath("$.id").value(1)); + } + }