order-notice.test.js
1.11 KB
import { describe, expect, it } from 'vitest'
import { render } from '../src/templates/order-notice.js'
const LOCALES = ['en', 'zh', 'ja', 'ko', 'es', 'pt']
const PURPOSES = ['order_paid', 'subscription_active', 'subscription_canceled', 'order_refunded', 'order_disputed']
describe('order notice email locale coverage', () => {
it.each(LOCALES.flatMap(locale => PURPOSES.map(purpose => [locale, purpose])))('renders %s %s', (locale, purpose) => {
const message = render({
locale,
purpose,
orderId: 'ord_123',
productId: 'credits_100',
amount: 'USD 9.99',
status: 'paid',
})
expect(message.subject).not.toBe('')
expect(message.text).toContain('ord_123')
expect(message.html).toContain('credits_100')
})
it('rejects unsupported locales and purposes', () => {
const data = { orderId: 'ord_123', productId: 'credits_100', status: 'paid' }
expect(() => render({ ...data, locale: 'id', purpose: 'order_paid' })).toThrow('unsupported locale: id')
expect(() => render({ ...data, locale: 'en', purpose: 'unknown' })).toThrow('unsupported purpose: unknown')
})
})