TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1import { describe, expect, it } from 'vitest';2import { verificationEmail, alertEmail, digestEmail } from './templates.js';3import { resolveTransport, sendMail } from './transport.js';45describe('templates', () => {6 it('render code and escape html', () => {7 const m = verificationEmail({ code: '123456', minutes: 10 });8 expect(m.subject).toContain('123456');9 expect(m.html).toContain('123456');10 expect(m.text).toContain('10 minutes');11 const a = alertEmail({ title: '<b>x</b>', body: 'b', href: 'https://x', facts: [['RIV', '$1,000']] });12 expect(a.html).not.toContain('<b>x</b>');13 expect(a.html).toContain('<b>x</b>');14 const d = digestEmail({ name: null, period: 'weekly', sections: [{ heading: 'Movers', rows: [{ label: 'A', value: '$1', delta: '-2%' }] }] });15 expect(d.text).toContain('MOVERS');16 });17 it('console transport works without keys', async () => {18 process.env.EMAIL_TRANSPORT = 'console';19 expect(resolveTransport()).toBe('console');20 const r = await sendMail({ to: 'a@b.c', subject: 's', html: '<p>h</p>', text: 't' });21 expect(r.ok).toBe(true);22 });23});24