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
21
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 }