Files
accounted/lib/invoices/__tests__/paid-at.test.ts
T
2026-08-02 20:44:59 +02:00

28 lines
907 B
TypeScript

import { describe, expect, it } from 'vitest'
import { paidAtFromDate } from '@/lib/invoices/paid-at'
function dateInTimeZone(timestamp: string, timeZone: string): string {
const parts = new Intl.DateTimeFormat('sv-SE', {
timeZone,
year: 'numeric',
month: '2-digit',
day: '2-digit',
}).formatToParts(new Date(timestamp))
const values = Object.fromEntries(parts.map(({ type, value }) => [type, value]))
return `${values.year}-${values.month}-${values.day}`
}
describe('paidAtFromDate', () => {
it('anchors date-only payments at UTC noon', () => {
expect(paidAtFromDate('2026-05-12')).toBe('2026-05-12T12:00:00Z')
})
it.each(['America/New_York', 'Europe/Stockholm', 'UTC'])(
'renders the original payment date in %s',
(timeZone) => {
const paidAt = paidAtFromDate('2026-05-12')
expect(dateInTimeZone(paidAt, timeZone)).toBe('2026-05-12')
},
)
})