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