Merge pull request #2188 from automatisch/aut-1350-sendInvitationEmail
test(user): write test for sendInvitationEmail
This commit is contained in:
@@ -743,4 +743,53 @@ describe('User model', () => {
|
|||||||
vi.useRealTimers();
|
vi.useRealTimers();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('sendInvitationEmail should generate invitation token and queue to send invitation email', async () => {
|
||||||
|
vi.useFakeTimers();
|
||||||
|
|
||||||
|
const date = DateTime.fromObject(
|
||||||
|
{ year: 2024, month: 11, day: 12, hour: 17, minute: 10 },
|
||||||
|
{ zone: 'UTC+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();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user