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