Files
pn-new-crm/tests/unit/email/contact-form-alert.test.ts

40 lines
1.6 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from 'vitest';
import { contactFormSalesAlert } from '@/lib/email/templates/contact-form-alert';
describe('contactFormSalesAlert', () => {
it('renders a branded HTML alert with all submitted details + a follow-up link', async () => {
const { subject, html, text } = await contactFormSalesAlert({
fullName: 'Jane Doe',
email: 'jane@example.com',
interestType: 'Owner, Crew',
comments: 'Interested in a berth for a 40m yacht.',
crmDeepLink: 'https://crm.portnimara.com/inquiries/abc',
portName: 'Port Nimara',
});
expect(subject).toContain('Jane Doe');
// Interest-registration style: friendly intro + detail lines + CRM follow-up link.
expect(html).toContain('A new contact-form enquiry has come in');
expect(html).toContain('Jane Doe');
expect(html).toContain('jane@example.com');
expect(html).toContain('Owner, Crew');
expect(html).toContain('Interested in a berth for a 40m yacht.');
expect(html).toContain('to follow up');
// Plain-text part mirrors the interest alert.
expect(text).toContain('A new contact-form enquiry');
expect(text).toContain('Comments: Interested in a berth for a 40m yacht.');
});
it('falls back gracefully when interest + comments are absent', async () => {
const { html, text } = await contactFormSalesAlert({
fullName: 'Bob Smith',
email: 'bob@example.com',
portName: 'Port Nimara',
});
expect(html).toContain('(none provided)');
expect(text).toContain('Comments: (none provided)');
expect(html).not.toContain('Interest:');
});
});