From 30008701d409b0effb82173b4a7d9c41d358416e Mon Sep 17 00:00:00 2001 From: Ellen Wright Date: Tue, 2 Jun 2026 15:08:43 +0100 Subject: [PATCH 1/4] fix: fix config for stfc email for call creation --- .../eventHandlers/email/stfcEmailHandler.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/eventHandlers/email/stfcEmailHandler.ts b/apps/backend/src/eventHandlers/email/stfcEmailHandler.ts index f693c6207c..25ba6e776b 100644 --- a/apps/backend/src/eventHandlers/email/stfcEmailHandler.ts +++ b/apps/backend/src/eventHandlers/email/stfcEmailHandler.ts @@ -3,6 +3,7 @@ import { container } from 'tsyringe'; import { EmailTemplateId } from './emailTemplateId'; import { Tokens } from '../../config/Tokens'; +import { EmailTemplateDataSource } from '../../datasources/EmailTemplateDataSource'; import { ApplicationEvent } from '../../events/applicationEvents'; import { Event } from '../../events/event.enum'; import { MailService } from '../MailService/MailService'; @@ -15,6 +16,10 @@ export async function stfcEmailHandler(event: ApplicationEvent) { const mailService = container.resolve(Tokens.MailService); + const emailTemplateDataSource = container.resolve( + Tokens.EmailTemplateDataSource + ); + switch (event.type) { case Event.CALL_CREATED: { if (event?.call) { @@ -33,9 +38,22 @@ export async function stfcEmailHandler(event: ApplicationEvent) { startCall, endCall, }))(event.call); + + const template = EmailTemplateId.CALL_CREATED_EMAIL; + const emailTemplate = + await emailTemplateDataSource.getEmailTemplateByName(template); + + if (!emailTemplate) { + logger.logError('Email template not found', { + template, + }); + + return; + } + const sendMailOptions = callCreationEmail( eventCallPartial, - EmailTemplateId.CALL_CREATED_EMAIL, + emailTemplate.id.toString(), notificationEmailAddress ); From cea93c884552ecee5148f295795d21ae7ec22020 Mon Sep 17 00:00:00 2001 From: Ellen Wright Date: Wed, 3 Jun 2026 14:41:31 +0100 Subject: [PATCH 2/4] Add call to emaildatasource for test --- .../src/eventHandlers/email/stfcEmailHandler.spec.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts index 6f3c72da16..52ddb467a5 100644 --- a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts +++ b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts @@ -5,10 +5,14 @@ import { container } from 'tsyringe'; import { stfcEmailHandler } from './stfcEmailHandler'; import { Tokens } from '../../config/Tokens'; +import { EmailTemplateDataSource } from '../../datasources/EmailTemplateDataSource'; import { ApplicationEvent } from '../../events/applicationEvents'; import { Event } from '../../events/event.enum'; const ORIGINAL_ENV = process.env; +const emailTemplateDataSource = container.resolve( + Tokens.EmailTemplateDataSource +); const spyLogError = jest .spyOn(Logger.logger, 'logError') .mockImplementation(() => {}); @@ -109,7 +113,12 @@ describe('stfcEmailHandler', () => { await new Promise(setImmediate); expect(mockMailService.sendMail).toHaveBeenCalledWith({ - content: { template: 'call-created-email' }, + content: { + template: + await emailTemplateDataSource.getEmailTemplateByName( + 'call-created-email' + ), + }, substitution_data: { shortCode: 'error', }, From 848e9394957195a363cd1818947fe4d48c04befa Mon Sep 17 00:00:00 2001 From: Ellen Wright Date: Wed, 3 Jun 2026 15:00:09 +0100 Subject: [PATCH 3/4] move call to emaildatasource --- .../src/eventHandlers/email/stfcEmailHandler.spec.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts index 52ddb467a5..053d5b1bce 100644 --- a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts +++ b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts @@ -73,7 +73,12 @@ describe('stfcEmailHandler', () => { expect(process.env.FBS_EMAIL).toBe(inviteEmail); expect(mockMailService.sendMail).toHaveBeenCalledWith({ - content: { template: 'call-created-email' }, + content: { + template: + await emailTemplateDataSource.getEmailTemplateByName( + 'call-created-email' + ), + }, substitution_data: { shortCode: 'string', startCall: new Date(2000, 1, 1), @@ -114,10 +119,7 @@ describe('stfcEmailHandler', () => { expect(mockMailService.sendMail).toHaveBeenCalledWith({ content: { - template: - await emailTemplateDataSource.getEmailTemplateByName( - 'call-created-email' - ), + template: 'call-created-email', }, substitution_data: { shortCode: 'error', From c8be73f734827a8dc849b923796e8105424b961f Mon Sep 17 00:00:00 2001 From: Ellen Wright Date: Thu, 4 Jun 2026 09:15:48 +0100 Subject: [PATCH 4/4] update email tests --- .../eventHandlers/email/stfcEmailHandler.spec.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts index 053d5b1bce..2e05c33a7b 100644 --- a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts +++ b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts @@ -70,14 +70,15 @@ describe('stfcEmailHandler', () => { mockMailService.sendMail.mockResolvedValue({ success: true }); await stfcEmailHandler(mockEvent); + const emailTemplate = + await emailTemplateDataSource.getEmailTemplateByName( + 'call-created-email' + ); expect(process.env.FBS_EMAIL).toBe(inviteEmail); expect(mockMailService.sendMail).toHaveBeenCalledWith({ content: { - template: - await emailTemplateDataSource.getEmailTemplateByName( - 'call-created-email' - ), + template: emailTemplate?.id.toString(), }, substitution_data: { shortCode: 'string', @@ -108,6 +109,10 @@ describe('stfcEmailHandler', () => { isRejection: false, } as ApplicationEvent; const forcedError = new Error('SMTP down'); + const emailTemplate = + await emailTemplateDataSource.getEmailTemplateByName( + 'call-created-email' + ); mockMailService.sendMail.mockRejectedValueOnce(forcedError); container.registerInstance(Tokens.MailService, mockMailService); @@ -119,7 +124,7 @@ describe('stfcEmailHandler', () => { expect(mockMailService.sendMail).toHaveBeenCalledWith({ content: { - template: 'call-created-email', + template: emailTemplate?.id.toString(), }, substitution_data: { shortCode: 'error',