all repos — caroster @ 5b2bff1c4921d7880400037670dac9c88258965a

[Octree] Group carpool to your event https://caroster.io

e2e/tests/4.passenger.test.ts (view raw)

  1import { EVENT_ID, EVENT_UUID, TRAVEL_ID, USER, USER_ID } from "../constants";
  2import { 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: "Test waiting list passenger",
  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      data: {
 18        id: expect.stringMatching(/\d/),
 19        attributes: passenger,
 20      },
 21    },
 22  });
 23
 24  const getEventRequest = sdk.eventByUUID({
 25    uuid: EVENT_UUID,
 26  });
 27  await expect(getEventRequest).resolves.toMatchObject({
 28    eventByUUID: {
 29      data: {
 30        id: expect.stringMatching(/\d/),
 31        attributes: {
 32          waitingPassengers: {
 33            data: [
 34              {
 35                id: expect.stringMatching(/\d/),
 36                attributes: { ...passenger },
 37              },
 38            ],
 39          },
 40        },
 41      },
 42    },
 43  });
 44});
 45
 46test("createPassenger add a new known user to event's waiting list", async () => {
 47  const passenger: PassengerInput = {
 48    name: "Test User",
 49    email: "test@octree.ch",
 50    location: "Train station",
 51    user: USER_ID,
 52  };
 53  const createPassengerRequest = sdk.createPassenger({
 54    passenger: { ...passenger, event: EVENT_ID },
 55  });
 56
 57  await expect(createPassengerRequest).resolves.toMatchObject({
 58    createPassenger: {
 59      data: {
 60        attributes: {
 61          ...passenger,
 62          user: {
 63            data: {
 64              id: USER_ID,
 65              attributes: {
 66                firstName: expect.any(String),
 67                lastName: USER.lastName,
 68              },
 69            },
 70          },
 71        },
 72      },
 73    },
 74  });
 75
 76  const getEventRequest = sdk.eventByUUID({
 77    uuid: EVENT_UUID,
 78  });
 79  await expect(getEventRequest).resolves.toMatchObject({
 80    eventByUUID: {
 81      data: {
 82        id: expect.stringMatching(/\d/),
 83        attributes: {
 84          waitingPassengers: {
 85            data: expect.arrayContaining([
 86              expect.any(Object),
 87              {
 88                id: expect.stringMatching(/./),
 89                attributes: {
 90                  ...passenger,
 91                  user: {
 92                    data: {
 93                      id: USER_ID,
 94                      attributes: {
 95                        firstName: expect.any(String),
 96                        lastName: USER.lastName,
 97                      },
 98                    },
 99                  },
100                },
101              },
102            ]),
103          },
104        },
105      },
106    },
107  });
108});
109
110test("createPassenger add a new passenger to travel's passengers list", async () => {
111  const passenger: PassengerInput = {
112    name: "Test travel list passenger",
113    email: "okidoki@octree.ch",
114    location: "Church place",
115  };
116  const createPassengerRequest = sdk.createPassenger({
117    passenger: { ...passenger, travel: TRAVEL_ID },
118  });
119
120  await expect(createPassengerRequest).resolves.toMatchObject({
121    createPassenger: {
122      data: {
123        id: expect.stringMatching(/\d/),
124        attributes: passenger,
125      },
126    },
127  });
128
129  const getEventRequest = sdk.eventByUUID({
130    uuid: EVENT_UUID,
131  });
132  await expect(getEventRequest).resolves.toMatchObject({
133    eventByUUID: {
134      data: {
135        id: expect.stringMatching(/\d/),
136        attributes: {
137          travels: {
138            data: [
139              {
140                attributes: {
141                  passengers: {
142                    data: [
143                      {
144                        id: expect.any(String),
145                        attributes: {
146                          name: passenger.name,
147                          location: passenger.location,
148                          user: null,
149                        },
150                      },
151                    ],
152                  },
153                },
154              },
155            ],
156          },
157        },
158      },
159    },
160  });
161});
162
163test("updatePassenger returns updated passenger", async () => {
164  const passengerUpdate: PassengerInput = {
165    name: "Updated name",
166  };
167  const request = sdk.updatePassenger({
168    id: "1",
169    passengerUpdate,
170  });
171
172  await expect(request).resolves.toMatchObject({
173    updatePassenger: {
174      data: {
175        id: "1",
176        attributes: {
177          name: passengerUpdate.name,
178          email: "okidoki@octree.ch",
179        },
180      },
181    },
182  });
183});
184
185test("deletePassenger returns ID of deleted passenger", async () => {
186  const request = sdk.deletePassenger({
187    id: "2",
188  });
189
190  await expect(request).resolves.toMatchObject({
191    deletePassenger: {
192      data: {
193        id: "2",
194      },
195    },
196  });
197});