diff --git a/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts b/apps/backend/src/eventHandlers/email/stfcEmailHandler.spec.ts index 6f3c72da16..2e05c33a7b 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(() => {}); @@ -66,10 +70,16 @@ 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: 'call-created-email' }, + content: { + template: emailTemplate?.id.toString(), + }, substitution_data: { shortCode: 'string', startCall: new Date(2000, 1, 1), @@ -99,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); @@ -109,7 +123,9 @@ describe('stfcEmailHandler', () => { await new Promise(setImmediate); expect(mockMailService.sendMail).toHaveBeenCalledWith({ - content: { template: 'call-created-email' }, + content: { + template: emailTemplate?.id.toString(), + }, substitution_data: { shortCode: 'error', }, 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 );