Files
immich/server/src/repositories/notification.repository.spec.ts
T
Jason Rasmussen 1869b1b41a refactor: repositories (#15561)
* refactor: version history repository

* refactor: oauth repository

* refactor: trash repository

* refactor: telemetry repository

* refactor: metadata repository

* refactor: cron repository

* refactor: map repository

* refactor: server-info repository

* refactor: album user repository

* refactor: notification repository
2025-01-23 18:10:17 -05:00

77 lines
2.7 KiB
TypeScript

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<ILoggingRepository>;
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('<!DOCTYPE html PUBLIC');
expect(result.text).toContain('test email');
});
it('should render the email correctly for WELCOME template', async () => {
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('<!DOCTYPE html PUBLIC');
expect(result.text).toContain('A new account has been created for you');
});
it('should render the email correctly for ALBUM_INVITE template', async () => {
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('<!DOCTYPE html PUBLIC');
expect(result.text).toContain('Vacation');
});
it('should render the email correctly for ALBUM_UPDATE template', async () => {
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('<!DOCTYPE html PUBLIC');
expect(result.text).toContain('Holiday');
});
});
});