From cc6d781c22e0c82892044793d387e459f9528b5b Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 24 Feb 2023 08:36:06 +0100 Subject: [PATCH 1/4] Add tests that emails are send for denied and deleted contributions. --- .../resolver/ContributionResolver.test.ts | 36 ++++++++++++++++--- .../graphql/resolver/ContributionResolver.ts | 2 +- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 40da5339b..477bf0a99 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -25,7 +25,11 @@ import { listContributions, adminListAllContributions, } from '@/seeds/graphql/queries' -import { sendContributionConfirmedEmail } from '@/emails/sendEmailVariants' +import { + sendContributionConfirmedEmail, + sendContributionDeletedEmail, + sendContributionDeniedEmail, +} from '@/emails/sendEmailVariants' import { cleanDB, resetToken, @@ -57,13 +61,11 @@ jest.mock('@/emails/sendEmailVariants', () => { return { __esModule: true, ...originalModule, - // TODO: test the call of … - // sendAccountActivationEmail: jest.fn((a) => originalModule.sendAccountActivationEmail(a)), sendContributionConfirmedEmail: jest.fn((a) => originalModule.sendContributionConfirmedEmail(a), ), - // TODO: test the call of … - // sendContributionRejectedEmail: jest.fn((a) => originalModule.sendContributionRejectedEmail(a)), + sendContributionDeletedEmail: jest.fn((a) => originalModule.sendContributionDeletedEmail(a)), + sendContributionDeniedEmail: jest.fn((a) => originalModule.sendContributionDeniedEmail(a)), } }) @@ -830,6 +832,18 @@ describe('ContributionResolver', () => { }), ) }) + + it('calls sendContributionDeniedEmail', async () => { + expect(sendContributionDeniedEmail).toBeCalledWith({ + firstName: 'Bibi', + lastName: 'Bloxberg', + email: 'bibi@bloxberg.de', + language: 'de', + senderFirstName: 'Peter', + senderLastName: 'Lustig', + contributionMemo: 'Test contribution to deny', + }) + }) }) }) }) @@ -2461,6 +2475,18 @@ describe('ContributionResolver', () => { }), ) }) + + it('calls sendContributionDeletedEmail', async () => { + expect(sendContributionDeletedEmail).toBeCalledWith({ + firstName: 'Peter', + lastName: 'Lustig', + email: 'peter@lustig.de', + language: 'de', + senderFirstName: 'Peter', + senderLastName: 'Lustig', + contributionMemo: 'Das war leider zu Viel!', + }) + }) }) describe('creation already confirmed', () => { diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 36ed2c089..2726dd2cf 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -466,7 +466,7 @@ export class ContributionResolver { await EVENT_ADMIN_CONTRIBUTION_DELETE(contribution.userId, contribution.id, contribution.amount) - sendContributionDeletedEmail({ + await sendContributionDeletedEmail({ firstName: user.firstName, lastName: user.lastName, email: user.emailContact.email, From ed7cf461fb27fbe2bda50cb2fa324bf4c317cb33 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 28 Feb 2023 21:06:51 +0100 Subject: [PATCH 2/4] fix(backend): set email tls true in test --- backend/src/emails/sendEmailTranslated.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/emails/sendEmailTranslated.test.ts b/backend/src/emails/sendEmailTranslated.test.ts index eb4b26b92..79ba1cd77 100644 --- a/backend/src/emails/sendEmailTranslated.test.ts +++ b/backend/src/emails/sendEmailTranslated.test.ts @@ -8,6 +8,7 @@ CONFIG.EMAIL_SMTP_URL = 'EMAIL_SMTP_URL' CONFIG.EMAIL_SMTP_PORT = '1234' CONFIG.EMAIL_USERNAME = 'user' CONFIG.EMAIL_PASSWORD = 'pwd' +CONFIG.EMAIL_TLS = true jest.mock('nodemailer', () => { return { From 3a6b701d3b9a92eff21e3628ba022170e700dcbd Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 1 Mar 2023 05:16:37 +0100 Subject: [PATCH 3/4] Reduce mock of emails sendEmailVariant. --- .../graphql/resolver/ContributionResolver.test.ts | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.test.ts b/backend/src/graphql/resolver/ContributionResolver.test.ts index 477bf0a99..054e54c28 100644 --- a/backend/src/graphql/resolver/ContributionResolver.test.ts +++ b/backend/src/graphql/resolver/ContributionResolver.test.ts @@ -55,19 +55,7 @@ import { ContributionListResult } from '@model/Contribution' import { ContributionStatus } from '@enum/ContributionStatus' import { Order } from '@enum/Order' -// mock account activation email to avoid console spam -jest.mock('@/emails/sendEmailVariants', () => { - const originalModule = jest.requireActual('@/emails/sendEmailVariants') - return { - __esModule: true, - ...originalModule, - sendContributionConfirmedEmail: jest.fn((a) => - originalModule.sendContributionConfirmedEmail(a), - ), - sendContributionDeletedEmail: jest.fn((a) => originalModule.sendContributionDeletedEmail(a)), - sendContributionDeniedEmail: jest.fn((a) => originalModule.sendContributionDeniedEmail(a)), - } -}) +jest.mock('@/emails/sendEmailVariants') let mutate: any, query: any, con: any let testEnv: any From becd9e44eaab6e59f7a92a7319456ca61c6312d7 Mon Sep 17 00:00:00 2001 From: elweyn Date: Wed, 1 Mar 2023 05:20:25 +0100 Subject: [PATCH 4/4] Remove await before sendContributionDeletedEmail --- backend/src/graphql/resolver/ContributionResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 2726dd2cf..36ed2c089 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -466,7 +466,7 @@ export class ContributionResolver { await EVENT_ADMIN_CONTRIBUTION_DELETE(contribution.userId, contribution.id, contribution.amount) - await sendContributionDeletedEmail({ + sendContributionDeletedEmail({ firstName: user.firstName, lastName: user.lastName, email: user.emailContact.email,