View Javadoc
1   /*
2    * MIT License
3    * Copyright (c) 2006-2025 JMockit developers
4    * See LICENSE file for full license text.
5    */
6   package petclinic.visits;
7   
8   import static java.util.Arrays.asList;
9   
10  import static org.junit.jupiter.api.Assertions.assertEquals;
11  import static org.junit.jupiter.api.Assertions.assertNotNull;
12  import static org.junit.jupiter.api.Assertions.assertNull;
13  import static org.junit.jupiter.api.Assertions.assertSame;
14  
15  import java.util.List;
16  
17  import org.junit.jupiter.api.Test;
18  
19  import petclinic.pets.Pet;
20  import petclinic.pets.PetData;
21  import petclinic.util.SUT;
22  import petclinic.util.TestUtil;
23  
24  /**
25   * Integration tests for {@link Visit}-related operations, at the application service level. Each test runs in a
26   * database transaction that is rolled back at the end of the test.
27   */
28  final class VisitScreenTest {
29      @TestUtil
30      PetData petData;
31      @TestUtil
32      VisitData visitData;
33      @SUT
34      VisitScreen visitScreen;
35  
36      @Test
37      void showVisitsForSelectedPet() {
38          Visit v1 = visitData.create("Visit 1 for pet");
39          Visit v2 = visitData.create("Visit 2 for pet");
40          visitScreen.selectPet(v1.getPet().getId());
41  
42          visitScreen.showVisits();
43          List<Visit> visits = visitScreen.getVisits();
44  
45          assertEquals(asList(v1, v2), visits);
46      }
47  
48      @Test
49      void attemptToShowVisitsWithoutFirstSelectingAPet() {
50          visitScreen.showVisits();
51  
52          assertNull(visitScreen.getVisits());
53      }
54  
55      @Test
56      void attemptToSelectVisitWithNonExistingId() {
57          Visit visit = visitData.create("Visit 1 for pet");
58          visitScreen.selectVisit(visit.getId());
59  
60          visitScreen.selectVisit(95234232);
61  
62          assertNull(visitScreen.getVisit());
63          assertNull(visitScreen.getPet());
64      }
65  
66      @Test
67      void addNewVisitForPet() {
68          Pet pet = petData.create("Samantha", null, "hamster");
69  
70          visitScreen.requestNewVisit();
71          Visit visit = visitScreen.getVisit();
72          visit.setDescription("test");
73  
74          visitScreen.selectPet(pet.getId());
75          assertSame(pet, visitScreen.getPet());
76  
77          visitScreen.createOrUpdateVisit();
78  
79          petData.refresh(pet);
80          assertSame(pet, visit.getPet());
81          assertEquals(1, pet.getVisits().size());
82          assertNotNull(visit.getId());
83          assertNotNull(visit.getDate());
84      }
85  
86      @Test
87      void updateExistingVisit() {
88          Visit visit = visitData.create();
89          visitScreen.selectVisit(visit.getId());
90  
91          Visit editedVisited = visitScreen.getVisit();
92          String modifiedDescription = editedVisited.getDescription() + " - modified";
93          editedVisited.setDescription(modifiedDescription);
94  
95          visitScreen.createOrUpdateVisit();
96  
97          Visit modifiedVisit = visitScreen.getVisit();
98          visitData.refresh(modifiedVisit);
99          assertEquals(modifiedDescription, modifiedVisit.getDescription());
100     }
101 
102     @Test
103     void attemptToCreateOrUpdateVisitWithoutFirstSelectingAPet() {
104         visitScreen.createOrUpdateVisit();
105 
106         assertNull(visitScreen.getVisit());
107     }
108 
109     @Test
110     void attemptToUpdateVisitWithoutFirstSelectingAVisit() {
111         Pet pet = petData.create("Samantha", null, "hamster");
112         visitScreen.selectPet(pet.getId());
113 
114         visitScreen.createOrUpdateVisit();
115 
116         assertNull(visitScreen.getVisit());
117     }
118 }