From 07d9198cc842994fbda583fa1db257e7097c7568 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Tue, 12 Nov 2024 14:17:10 +0000 Subject: [PATCH 1/2] test(user): write test for sendInvitationEmail --- packages/backend/src/models/user.test.js | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/packages/backend/src/models/user.test.js b/packages/backend/src/models/user.test.js index b32aae70..9db29925 100644 --- a/packages/backend/src/models/user.test.js +++ b/packages/backend/src/models/user.test.js @@ -743,4 +743,49 @@ describe('User model', () => { vi.useRealTimers(); }); }); + + it('sendInvitationEmail should generate invitation token and queue to send invitation email', async () => { + vi.useFakeTimers(); + + const date = new Date(2024, 10, 12, 17, 10, 0, 0); + vi.setSystemTime(date); + + const user = await createUser(); + + const generateInvitationTokenSpy = vi + .spyOn(user, 'generateInvitationToken') + .mockReturnValue(); + + const emailQueueAddSpy = vi.spyOn(emailQueue, 'add').mockResolvedValue(); + + await user.sendInvitationEmail(); + + const refetchedUser = await user.$query(); + const jobName = `Invitation Email - ${refetchedUser.id}`; + + const jobPayload = { + email: refetchedUser.email, + subject: 'You are invited!', + template: 'invitation-instructions', + params: { + fullName: refetchedUser.fullName, + acceptInvitationUrl: refetchedUser.acceptInvitationUrl, + }, + }; + + const jobOptions = { + removeOnComplete: REMOVE_AFTER_7_DAYS_OR_50_JOBS, + removeOnFail: REMOVE_AFTER_30_DAYS_OR_150_JOBS, + }; + + expect(generateInvitationTokenSpy).toHaveBeenCalledOnce(); + + expect(emailQueueAddSpy).toHaveBeenCalledWith( + jobName, + jobPayload, + jobOptions + ); + + vi.useRealTimers(); + }); }); From bae76064e5de775b7d8f584dffddfe9f6158e780 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 21 Nov 2024 13:33:30 +0000 Subject: [PATCH 2/2] test(user): use luxon DateTime with zone over Date --- packages/backend/src/models/user.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/backend/src/models/user.test.js b/packages/backend/src/models/user.test.js index 9db29925..c70e9a17 100644 --- a/packages/backend/src/models/user.test.js +++ b/packages/backend/src/models/user.test.js @@ -747,7 +747,11 @@ describe('User model', () => { it('sendInvitationEmail should generate invitation token and queue to send invitation email', async () => { vi.useFakeTimers(); - const date = new Date(2024, 10, 12, 17, 10, 0, 0); + const date = DateTime.fromObject( + { year: 2024, month: 11, day: 12, hour: 17, minute: 10 }, + { zone: 'UTC+0' } + ); + vi.setSystemTime(date); const user = await createUser();