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')
  })
})