From 0fdb3e4401686f52128ecb07209e0c1ee83f4a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 17 Nov 2022 15:27:07 +0100 Subject: [PATCH] Test 'sendAccountActivationEmail' --- backend/src/emails/sendEmailVariants.test.ts | 71 +++++++++++++++++++- backend/src/emails/sendEmailVariants.ts | 36 +++++----- 2 files changed, 88 insertions(+), 19 deletions(-) diff --git a/backend/src/emails/sendEmailVariants.test.ts b/backend/src/emails/sendEmailVariants.test.ts index 4ac8221a7..017efc270 100644 --- a/backend/src/emails/sendEmailVariants.test.ts +++ b/backend/src/emails/sendEmailVariants.test.ts @@ -1,5 +1,5 @@ import CONFIG from '@/config' -import { sendAccountMultiRegistrationEmail } from './sendEmailVariants' +import { sendAccountActivationEmail, sendAccountMultiRegistrationEmail } from './sendEmailVariants' import { sendEmailTranslated } from './sendEmailTranslated' CONFIG.EMAIL = true @@ -19,6 +19,75 @@ jest.mock('./sendEmailTranslated', () => { describe('sendEmailVariants', () => { let result: Record | null + describe('sendAccountActivationEmail', () => { + beforeAll(async () => { + result = await sendAccountActivationEmail({ + firstName: 'Peter', + lastName: 'Lustig', + email: 'peter@lustig.de', + language: 'en', + activationLink: 'http://localhost/checkEmail/6627633878930542284', + timeDurationObject: { hours: 24, minutes: 0 }, + }) + }) + + describe('calls "sendEmailTranslated"', () => { + it('with expected parameters', () => { + expect(sendEmailTranslated).toBeCalledWith({ + receiver: { + to: 'Peter Lustig ', + }, + template: 'sendAccountActivation', + locals: { + firstName: 'Peter', + lastName: 'Lustig', + locale: 'en', + activationLink: 'http://localhost/checkEmail/6627633878930542284', + timeDurationObject: { hours: 24, minutes: 0 }, + resendLink: CONFIG.EMAIL_LINK_FORGOTPASSWORD, + }, + }) + }) + + it('has expected result', () => { + expect(result).toMatchObject({ + envelope: { + from: 'info@gradido.net', + to: ['peter@lustig.de'], + }, + message: expect.any(String), + originalMessage: expect.objectContaining({ + to: 'Peter Lustig ', + from: 'Gradido (nicht antworten) ', + attachments: [], + subject: 'Gradido: Email Verification', + html: + expect.stringContaining('Gradido: Email Verification') && + expect.stringContaining('>Gradido: Email Verification') && + expect.stringContaining( + 'Your email address has just been registered with Gradido.', + ) && + expect.stringContaining( + 'Please click on this link to complete the registration and activate your Gradido account:', + ) && + expect.stringContaining( + 'http://localhost/checkEmail/6627633878930542284', + ) && + expect.stringContaining('or copy the link above into your browser window.') && + expect.stringContaining( + 'The link has a validity of {hours} hours and {minutes} minutes. If the validity of the link has already expired, you can have a new link sent to you here by entering your email address:', + ) && + expect.stringContaining( + `${CONFIG.EMAIL_LINK_FORGOTPASSWORD}`, + ) && + expect.stringContaining('Sincerely yours,
your Gradido team'), + text: expect.stringContaining('GRADIDO: EMAIL VERIFICATION'), + }), + }) + }) + }) + }) + describe('sendAccountMultiRegistrationEmail', () => { beforeAll(async () => { result = await sendAccountMultiRegistrationEmail({ diff --git a/backend/src/emails/sendEmailVariants.ts b/backend/src/emails/sendEmailVariants.ts index 3ee749354..c507f6ace 100644 --- a/backend/src/emails/sendEmailVariants.ts +++ b/backend/src/emails/sendEmailVariants.ts @@ -1,24 +1,6 @@ import CONFIG from '@/config' import { sendEmailTranslated } from './sendEmailTranslated' -export const sendAccountMultiRegistrationEmail = (data: { - firstName: string - lastName: string - email: string - language: string -}): Promise | null> => { - return sendEmailTranslated({ - receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, - template: 'accountMultiRegistration', - locals: { - firstName: data.firstName, - lastName: data.lastName, - locale: data.language, - resendLink: CONFIG.EMAIL_LINK_FORGOTPASSWORD, - }, - }) -} - export const sendAccountActivationEmail = (data: { firstName: string lastName: string @@ -40,3 +22,21 @@ export const sendAccountActivationEmail = (data: { }, }) } + +export const sendAccountMultiRegistrationEmail = (data: { + firstName: string + lastName: string + email: string + language: string +}): Promise | null> => { + return sendEmailTranslated({ + receiver: { to: `${data.firstName} ${data.lastName} <${data.email}>` }, + template: 'accountMultiRegistration', + locals: { + firstName: data.firstName, + lastName: data.lastName, + locale: data.language, + resendLink: CONFIG.EMAIL_LINK_FORGOTPASSWORD, + }, + }) +}