Skip to content

Commit e765e3f

Browse files
author
Dave Syer
committed
Fix lazy loading issue in owner details
1 parent 8a28801 commit e765e3f

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.util.List;
1919
import java.util.Map;
2020

21+
import javax.transaction.Transactional;
2122
import javax.validation.Valid;
2223

2324
import org.springframework.data.domain.Page;
@@ -153,11 +154,12 @@ public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result,
153154
* @return a ModelMap with the model attributes for the view
154155
*/
155156
@GetMapping("/owners/{ownerId}")
157+
@Transactional
156158
public ModelAndView showOwner(@PathVariable("ownerId") int ownerId) {
157159
ModelAndView mav = new ModelAndView("owners/ownerDetails");
158160
Owner owner = this.owners.findById(ownerId);
159161
for (Pet pet : owner.getPets()) {
160-
pet.getVisits();
162+
pet.getVisits().size();
161163
}
162164
mav.addObject(owner);
163165
return mav;

src/test/java/org/springframework/samples/petclinic/PetclinicIntegrationTests.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,43 @@
1616

1717
package org.springframework.samples.petclinic;
1818

19+
import static org.assertj.core.api.Assertions.assertThat;
20+
1921
import org.junit.jupiter.api.Test;
2022
import org.springframework.beans.factory.annotation.Autowired;
2123
import org.springframework.boot.test.context.SpringBootTest;
24+
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
25+
import org.springframework.boot.web.client.RestTemplateBuilder;
26+
import org.springframework.boot.web.server.LocalServerPort;
27+
import org.springframework.http.HttpStatus;
28+
import org.springframework.http.RequestEntity;
29+
import org.springframework.http.ResponseEntity;
2230
import org.springframework.samples.petclinic.vet.VetRepository;
31+
import org.springframework.web.client.RestTemplate;
2332

24-
@SpringBootTest
33+
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
2534
class PetclinicIntegrationTests {
2635

36+
@LocalServerPort
37+
int port;
38+
2739
@Autowired
2840
private VetRepository vets;
2941

42+
@Autowired
43+
private RestTemplateBuilder builder;
44+
3045
@Test
3146
void testFindAll() throws Exception {
3247
vets.findAll();
3348
vets.findAll(); // served from cache
3449
}
3550

51+
@Test
52+
void testOwnerDetails() {
53+
RestTemplate template = builder.rootUri("http://localhost:" + port).build();
54+
ResponseEntity<String> result = template.exchange(RequestEntity.get("/owners/1").build(), String.class);
55+
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
56+
}
57+
3658
}

src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
3232

3333
import java.time.LocalDate;
34-
import java.util.Collections;
3534
import java.util.List;
3635

3736
import org.assertj.core.util.Lists;

0 commit comments

Comments
 (0)