import { describe, expect, it } from 'vitest' import { formatDate, marketplaceReservationEmail, resetPasswordEmail, signupEmail, } from './emailTranslations' describe('emailTranslations', () => { const trialEnd = new Date('2026-07-15T12:00:00.000Z') it('renders signup subjects in every supported locale', () => { expect(signupEmail.subject('en')).toContain('workspace') expect(signupEmail.subject('fr')).toContain('espace') expect(signupEmail.subject('ar')).toContain('جاهزة') }) it('renders localized signup text with billing and provider details', () => { const text = signupEmail.text({ firstName: 'Aya', companyName: 'Atlas Cars', plan: 'PRO', billingPeriod: 'ANNUAL', currency: 'MAD', paymentProvider: 'AmanPay', trialEnd, }, 'fr') expect(text).toContain('Bonjour Aya') expect(text).toContain('Atlas Cars') expect(text).toContain('Forfait : PRO (annuel)') expect(text).toContain('Fournisseur de paiement principal : AmanPay') }) it('marks Arabic reset-password HTML as right-to-left and embeds the reset URL', () => { const html = resetPasswordEmail.html('https://example.test/reset/token', 'Mina', 45, 'ar') expect(html).toContain('dir="rtl"') expect(html).toContain('https://example.test/reset/token') expect(html).toContain('45') }) it('includes optional contact phone in marketplace reservation HTML when present', () => { const html = marketplaceReservationEmail.html({ firstName: 'Yassine', vehicleYear: 2024, vehicleMake: 'Dacia', vehicleModel: 'Duster', companyName: 'Atlas Cars', startDate: new Date('2026-08-01T00:00:00.000Z'), endDate: new Date('2026-08-05T00:00:00.000Z'), totalDays: 4, rateDisplay: '400.00', totalDisplay: '1600.00', email: 'yassine@example.test', phone: '+212600000000', }, 'en') expect(html).toContain('2024 Dacia Duster') expect(html).toContain('Atlas Cars') expect(html).toContain('yassine@example.test or +212600000000') }) it('formats dates with the locale-specific formatter', () => { expect(formatDate(new Date('2026-02-03T00:00:00.000Z'), 'en')).toContain('2026') expect(formatDate(new Date('2026-02-03T00:00:00.000Z'), 'fr')).toContain('2026') expect(formatDate(new Date('2026-02-03T00:00:00.000Z'), 'ar')).toMatch(/2026|٢٠٢٦/) expect(formatDate(new Date('2026-02-03T00:00:00.000Z'), 'ar')).toContain('فبراير') }) })