backend/api/event/event.test.js (view raw)
1const axios = require('axios');
2const controller = require('./controllers/event');
3
4jest.mock('axios');
5
6beforeAll(() => {
7 global.strapi.plugins['email-designer'].services.template.fetch = jest.fn(
8 () => 1
9 );
10 global.strapi.plugins['email-designer'].services.email.sendTemplatedEmail =
11 jest.fn();
12
13 axios.get.mockResolvedValue({data: [{lat: 0, lng: 0}]});
14});
15
16describe('controller.event.findOne', () => {
17 test('gets sanitized event', async () => {
18 const ctx = getContext();
19 ctx.setParams({
20 uuid: '00000000-0000-0000-0000-000000000000',
21 });
22
23 const result = await controller.findOne(ctx);
24 expect(result).toEqual(
25 expect.objectContaining({
26 name: 'Test event',
27 email: 'test@example.org',
28 date: '2022-01-12',
29 address: 'Uni-mail, Geneva, CH',
30 uuid: '00000000-0000-0000-0000-000000000000',
31 waitingPassengers: expect.any(Array),
32 })
33 );
34 expect(result).toEqual(
35 expect.not.objectContaining({
36 created_by: expect.any(String),
37 users: expect.any(Array),
38 })
39 );
40 });
41
42 test('sends bad request if user does not exist', async () => {
43 const ctx = getContext();
44 ctx.setParams({
45 uuid: 'does not exist',
46 });
47 await controller.findOne(ctx);
48 expect(ctx.badRequest).toHaveBeenCalled();
49 });
50});
51
52describe('controller.event.create', () => {
53 test('creates new event', async () => {
54 const event = {
55 name: 'New event',
56 email: 'test@test.com',
57 address: 'Event address',
58 date: '2022-12-12',
59 };
60 const ctx = getContext();
61 ctx.setBody(event);
62 const result = await controller.create(ctx);
63 expect(result).toEqual(
64 expect.objectContaining({
65 id: expect.any(Number),
66 uuid: expect.any(String),
67 email: event.email,
68 address: event.address,
69 date: event.date,
70 })
71 );
72 });
73});
74
75describe('controller.event.update', () => {
76 test('updates event', async () => {
77 const uuid = '00000000-0000-0000-0000-000000000000';
78 const eventUpdate = {
79 name: 'Updated event',
80 email: 'test+update@test.com',
81 address: 'New event address',
82 };
83 const ctx = getContext();
84 ctx.setParams({uuid});
85 ctx.setBody(eventUpdate);
86
87 const result = await controller.update(ctx);
88 expect(result).toEqual(
89 expect.objectContaining({
90 id: expect.any(Number),
91 uuid: uuid,
92 email: eventUpdate.email,
93 address: eventUpdate.address,
94 })
95 );
96 });
97
98 test('sends bad request if user does not exist', async () => {
99 const ctx = getContext();
100 ctx.setParams({
101 uuid: 'does not exist',
102 });
103 await controller.update(ctx);
104 expect(ctx.badRequest).toHaveBeenCalled();
105 });
106});