import { describe, expect, it } from 'vitest'; import { residentialClientConfirmation, residentialSalesAlert, } from '@/lib/email/templates/residential-inquiry'; describe('residentialClientConfirmation', () => { it('mirrors the website copy + reflects the chosen residence types', async () => { const { subject, html, text } = await residentialClientConfirmation({ firstName: 'Mia', contactEmail: 'sales@portnimara.com', residenceTypes: ['Two Bedroom Marina Villa', 'Five Bedroom Oceanfront Villa'], portName: 'Port Nimara', }); expect(subject).toBe('Port Nimara — Thank You for Your Interest'); expect(text).toContain( 'Thank you for expressing interest in the Two Bedroom Marina Villa and the Five Bedroom Oceanfront Villa', ); expect(text).toContain('Our team has registered your interest'); expect(text).toContain('The Port Nimara Residences Team'); // Never leak the CRM brand name to a client. expect(html).not.toContain('Port Nimara CRM'); }); it('falls back to the website generic phrase when no types are selected', async () => { const { html } = await residentialClientConfirmation({ firstName: 'Sam', contactEmail: 'sales@portnimara.com', portName: 'Port Nimara', }); expect(html).toContain('a Port Nimara Residence'); expect(html).not.toContain('Port Nimara CRM'); }); }); describe('residentialSalesAlert', () => { it('renders residence type(s) + preferred contact + comments, with NO CRM mention', async () => { const { html, text } = await residentialSalesAlert({ fullName: 'Mia Ng', email: 'mia@example.com', phone: '+15551234', residenceTypes: ['Two Bedroom Marina Villa'], preferredContactMethod: 'phone', notes: 'Looking for a winter completion.', portName: 'Port Nimara', }); expect(html).toContain('A new residential enquiry has come in'); expect(html).toContain('Residence type(s):'); expect(html).toContain('Two Bedroom Marina Villa'); expect(html).toContain('Preferred contact:'); expect(html).toContain('Phone call back'); expect(html).toContain('Looking for a winter completion.'); expect(text).toContain('- Port Nimara Residences'); // Residential internal alerts must not mention the CRM (recipient is external). expect(html).not.toContain('CRM'); expect(html).not.toContain('to follow up'); expect(text).toContain('Residence type(s): Two Bedroom Marina Villa'); expect(text).toContain('Preferred contact: Phone call back'); expect(text).toContain('Comments: Looking for a winter completion.'); expect(text).not.toContain('CRM'); }); it('omits optional rows cleanly when absent', async () => { const { html } = await residentialSalesAlert({ fullName: 'Bob Smith', email: 'bob@example.com', phone: '+1999', portName: 'Port Nimara', }); expect(html).not.toContain('Residence type(s):'); expect(html).not.toContain('Preferred contact:'); expect(html).toContain('Bob Smith'); }); });