From 18a4408e8aca1c9bbbe39fedbcfd447b2cb26d65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 21 Nov 2022 13:37:29 +0100 Subject: [PATCH] Adjust the tests for new translatable 'sendAccountActivationEmail' --- .../graphql/resolver/AdminResolver.test.ts | 5 ++-- backend/src/graphql/resolver/AdminResolver.ts | 9 ++++---- .../src/graphql/resolver/UserResolver.test.ts | 23 +++++++++---------- backend/src/graphql/resolver/UserResolver.ts | 2 +- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/backend/src/graphql/resolver/AdminResolver.test.ts b/backend/src/graphql/resolver/AdminResolver.test.ts index 503bab472..ea1bb848e 100644 --- a/backend/src/graphql/resolver/AdminResolver.test.ts +++ b/backend/src/graphql/resolver/AdminResolver.test.ts @@ -36,7 +36,7 @@ import { import { GraphQLError } from 'graphql' import { User } from '@entity/User' /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ -import { sendAccountActivationEmail } from '@/mailer/sendAccountActivationEmail' +import { sendAccountActivationEmail } from '@/emails/sendEmailVariants' import Decimal from 'decimal.js-light' import { Contribution } from '@entity/Contribution' import { Transaction as DbTransaction } from '@entity/Transaction' @@ -47,9 +47,10 @@ import { EventProtocolType } from '@/event/EventProtocolType' import { logger } from '@test/testSetup' // mock account activation email to avoid console spam -jest.mock('@/mailer/sendAccountActivationEmail', () => { +jest.mock('@/emails/sendEmailVariants', () => { return { __esModule: true, + // TODO: test the call of … sendAccountActivationEmail: jest.fn(), } }) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 80c69a864..bd3ed20dc 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -39,8 +39,8 @@ import { Decay } from '@model/Decay' import Paginated from '@arg/Paginated' import TransactionLinkFilters from '@arg/TransactionLinkFilters' import { Order } from '@enum/Order' -import { findUserByEmail, activationLink, printTimeDuration } from './UserResolver' -import { sendAccountActivationEmail } from '@/mailer/sendAccountActivationEmail' +import { findUserByEmail, activationLink, getTimeDurationObject } from './UserResolver' +import { sendAccountActivationEmail } from '@/emails/sendEmailVariants' import { transactionLinkCode as contributionLinkCode } from './TransactionLinkResolver' import CONFIG from '@/config' import { @@ -656,11 +656,12 @@ export class AdminResolver { // eslint-disable-next-line @typescript-eslint/no-unused-vars const emailSent = await sendAccountActivationEmail({ - link: activationLink(emailContact.emailVerificationCode), firstName: user.firstName, lastName: user.lastName, email, - duration: printTimeDuration(CONFIG.EMAIL_CODE_VALID_TIME), + language: user.language, + activationLink: activationLink(emailContact.emailVerificationCode), + timeDurationObject: getTimeDurationObject(CONFIG.EMAIL_CODE_VALID_TIME), }) // In case EMails are disabled log the activation link for the user diff --git a/backend/src/graphql/resolver/UserResolver.test.ts b/backend/src/graphql/resolver/UserResolver.test.ts index 6323abfde..fac4618bf 100644 --- a/backend/src/graphql/resolver/UserResolver.test.ts +++ b/backend/src/graphql/resolver/UserResolver.test.ts @@ -18,15 +18,16 @@ import { verifyLogin, queryOptIn, searchAdminUsers } from '@/seeds/graphql/queri import { GraphQLError } from 'graphql' import { User } from '@entity/User' import CONFIG from '@/config' -import { sendAccountActivationEmail } from '@/mailer/sendAccountActivationEmail' -import { sendAccountMultiRegistrationEmail } from '@/emails/sendEmailVariants' +import { + sendAccountActivationEmail, + sendAccountMultiRegistrationEmail, +} from '@/emails/sendEmailVariants' import { sendResetPasswordEmail } from '@/mailer/sendResetPasswordEmail' import { printTimeDuration, activationLink } from './UserResolver' import { contributionLinkFactory } from '@/seeds/factory/contributionLink' import { transactionLinkFactory } from '@/seeds/factory/transactionLink' import { ContributionLink } from '@model/ContributionLink' import { TransactionLink } from '@entity/TransactionLink' - import { EventProtocolType } from '@/event/EventProtocolType' import { EventProtocol } from '@entity/EventProtocol' import { logger, i18n as localization } from '@test/testSetup' @@ -39,16 +40,10 @@ import { bobBaumeister } from '@/seeds/users/bob-baumeister' // import { klicktippSignIn } from '@/apis/KlicktippController' -jest.mock('@/mailer/sendAccountActivationEmail', () => { - return { - __esModule: true, - sendAccountActivationEmail: jest.fn(), - } -}) - jest.mock('@/emails/sendEmailVariants', () => { return { __esModule: true, + sendAccountActivationEmail: jest.fn(), sendAccountMultiRegistrationEmail: jest.fn(), } }) @@ -180,11 +175,15 @@ describe('UserResolver', () => { emailVerificationCode, ).replace(/{code}/g, '') expect(sendAccountActivationEmail).toBeCalledWith({ - link: activationLink, firstName: 'Peter', lastName: 'Lustig', email: 'peter@lustig.de', - duration: expect.any(String), + language: 'de', + activationLink, + timeDurationObject: expect.objectContaining({ + hours: expect.any(Number), + minutes: expect.any(Number), + }), }) }) diff --git a/backend/src/graphql/resolver/UserResolver.ts b/backend/src/graphql/resolver/UserResolver.ts index 62636ebb7..23cf9eaeb 100644 --- a/backend/src/graphql/resolver/UserResolver.ts +++ b/backend/src/graphql/resolver/UserResolver.ts @@ -953,7 +953,7 @@ const canEmailResend = (updatedAt: Date): boolean => { return !isTimeExpired(updatedAt, CONFIG.EMAIL_CODE_REQUEST_TIME) } -const getTimeDurationObject = (time: number): { hours?: number; minutes: number } => { +export const getTimeDurationObject = (time: number): { hours?: number; minutes: number } => { if (time > 60) { return { hours: Math.floor(time / 60),