mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-15 23:18:39 +09:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import {EmailI18nService} from '@pkgs/email/src/EmailI18nService';
|
|
import type {EmailConfig, EmailMessage, IEmailProvider} from '@pkgs/email/src/EmailProviderTypes';
|
|
import {EmailService} from '@pkgs/email/src/EmailService';
|
|
import {describe, expect, it} from 'vitest';
|
|
|
|
const CONFIG: EmailConfig = {
|
|
enabled: true,
|
|
fromEmail: '[email protected]',
|
|
fromName: 'Fluxer',
|
|
appBaseUrl: 'https://example.com',
|
|
marketingBaseUrl: 'https://example.com',
|
|
};
|
|
|
|
async function sendWith(config: EmailConfig): Promise<EmailMessage> {
|
|
const sent: Array<EmailMessage> = [];
|
|
const provider: IEmailProvider = {
|
|
sendEmail: async (message) => {
|
|
sent.push(message);
|
|
return true;
|
|
},
|
|
};
|
|
const service = new EmailService(config, new EmailI18nService(), provider);
|
|
await expect(service.sendRegistrationApprovedEmail('[email protected]', 'testuser', 'en-US')).resolves.toBe(true);
|
|
expect(sent).toHaveLength(1);
|
|
return sent[0];
|
|
}
|
|
|
|
describe('EmailService reply-to', () => {
|
|
it('sets the configured reply-to address on every message', async () => {
|
|
const message = await sendWith({...CONFIG, replyTo: '[email protected]'});
|
|
expect(message.replyTo).toBe('[email protected]');
|
|
expect(message.from).toEqual({email: '[email protected]', name: 'Fluxer'});
|
|
});
|
|
|
|
it.each([undefined, null, ''])('omits the reply-to address when it is %j', async (replyTo) => {
|
|
const message = await sendWith({...CONFIG, replyTo});
|
|
expect(message).not.toHaveProperty('replyTo');
|
|
});
|
|
});
|