e2e/tests/4.passenger.test.ts (view raw)
1import { EVENT_ID, EVENT_UUID, TRAVEL_ID, USER, USER_ID } from "../constants";
2import { EditPassengerInput, PassengerInput } from "../graphql";
3import { sdk } from "../lib/gqlSdk";
4
5test("createPassenger add a new passenger to event's waiting list", async () => {
6 const passenger: PassengerInput = {
7 name: "Oki Doki",
8 email: "okidoki@octree.ch",
9 location: "Church place",
10 };
11 const createPassengerRequest = sdk.createPassenger({
12 passenger: { ...passenger, event: EVENT_ID },
13 });
14
15 await expect(createPassengerRequest).resolves.toMatchObject({
16 createPassenger: {
17 passenger,
18 },
19 });
20
21 const getEventRequest = sdk.eventByUUID({
22 uuid: EVENT_UUID,
23 });
24 await expect(getEventRequest).resolves.toMatchObject({
25 eventByUUID: {
26 waitingPassengers: [
27 {
28 ...passenger,
29 user: null,
30 id: "1",
31 },
32 ],
33 },
34 });
35});
36
37test("createPassenger add a new known user to event's waiting list", async () => {
38 const passenger: PassengerInput = {
39 name: "Test User",
40 email: "test@octree.ch",
41 location: "Train station",
42 user: USER_ID,
43 };
44 const createPassengerRequest = sdk.createPassenger({
45 passenger: { ...passenger, event: EVENT_ID },
46 });
47
48 await expect(createPassengerRequest).resolves.toMatchObject({
49 createPassenger: {
50 passenger: {
51 ...passenger,
52 user: {
53 id: USER.id,
54 firstName: USER.firstName,
55 lastName: USER.lastName,
56 },
57 },
58 },
59 });
60
61 const getEventRequest = sdk.eventByUUID({
62 uuid: EVENT_UUID,
63 });
64 await expect(getEventRequest).resolves.toMatchObject({
65 eventByUUID: {
66 waitingPassengers: expect.arrayContaining([
67 expect.objectContaining({
68 ...passenger,
69 user: {
70 id: USER.id,
71 firstName: USER.firstName,
72 lastName: USER.lastName,
73 },
74 }),
75 ]),
76 },
77 });
78});
79
80test("createPassenger add a new passenger to travel's passengers list", async () => {
81 const passenger: PassengerInput = {
82 name: "Oki Doki",
83 email: "okidoki@octree.ch",
84 location: "Church place",
85 };
86 const createPassengerRequest = sdk.createPassenger({
87 passenger: { ...passenger, travel: TRAVEL_ID },
88 });
89
90 await expect(createPassengerRequest).resolves.toMatchObject({
91 createPassenger: {
92 passenger,
93 },
94 });
95
96 const getEventRequest = sdk.eventByUUID({
97 uuid: EVENT_UUID,
98 });
99 await expect(getEventRequest).resolves.toMatchObject({
100 eventByUUID: {
101 travels: [
102 {
103 id: TRAVEL_ID,
104 passengers: [
105 {
106 name: passenger.name,
107 location: passenger.location,
108 user: null,
109 },
110 ],
111 },
112 ],
113 },
114 });
115});
116
117test("updatePassenger returns updated passenger", async () => {
118 const passengerUpdate: EditPassengerInput = {
119 name: "Updated name",
120 };
121 const request = sdk.updatePassenger({
122 id: "1",
123 passengerUpdate,
124 });
125
126 await expect(request).resolves.toMatchObject({
127 updatePassenger: {
128 passenger: expect.objectContaining({
129 name: passengerUpdate.name,
130 email: "okidoki@octree.ch",
131 }),
132 },
133 });
134});
135
136test("deletePassenger returns ID of deleted passenger", async () => {
137 const request = sdk.deletePassenger({
138 id: "1",
139 });
140
141 await expect(request).resolves.toMatchObject({
142 deletePassenger: {
143 passenger: {
144 id: "1",
145 },
146 },
147 });
148});