import { LoggingRepository } from 'src/repositories/logging.repository'; import { EmailRenderRequest, EmailTemplate, NotificationRepository } from 'src/repositories/notification.repository'; import { ILoggingRepository } from 'src/types'; import { newLoggingRepositoryMock } from 'test/repositories/logger.repository.mock'; import { Mocked } from 'vitest'; describe(NotificationRepository.name, () => { let sut: NotificationRepository; let loggerMock: Mocked; beforeEach(() => { loggerMock = newLoggingRepositoryMock(); sut = new NotificationRepository(loggerMock as ILoggingRepository as LoggingRepository); }); describe('renderEmail', () => { it('should render the email correctly for TEST_EMAIL template', async () => { const request: EmailRenderRequest = { template: EmailTemplate.TEST_EMAIL, data: { displayName: 'Alen Turing', baseUrl: 'http://localhost' }, customTemplate: '', }; const result = await sut.renderEmail(request); expect(result.html).toContain(' { const request: EmailRenderRequest = { template: EmailTemplate.WELCOME, data: { displayName: 'Alen Turing', username: 'turing', baseUrl: 'http://localhost' }, customTemplate: '', }; const result = await sut.renderEmail(request); expect(result.html).toContain(' { const request: EmailRenderRequest = { template: EmailTemplate.ALBUM_INVITE, data: { albumName: 'Vacation', albumId: '123', senderName: 'John', recipientName: 'Jane', baseUrl: 'http://localhost', }, customTemplate: '', }; const result = await sut.renderEmail(request); expect(result.html).toContain(' { const request: EmailRenderRequest = { template: EmailTemplate.ALBUM_UPDATE, data: { albumName: 'Holiday', albumId: '123', recipientName: 'Jane', baseUrl: 'http://localhost' }, customTemplate: '', }; const result = await sut.renderEmail(request); expect(result.html).toContain('