amanpay / web /src /utils /format.test.ts
MHamdan's picture
CI deploy 895c0ed
adb91eb verified
Raw
History Blame Contribute Delete
2.23 kB
import { describe, it, expect } from 'vitest'
import { formatDateTimeSafe } from './format'
// A real, deterministic timestamp: 2023-11-14T22:13:20Z (epoch seconds 1700000000).
const REAL_SECONDS = 1_700_000_000
const REAL_ISO = '2023-11-14T22:13:20Z'
describe('formatDateTimeSafe', () => {
it('formats a valid epoch-seconds timestamp', () => {
const out = formatDateTimeSafe(REAL_SECONDS, 'en')
expect(out).toBeTruthy()
expect(out).toMatch(/2023/)
expect(out).not.toMatch(/1970|Invalid Date/)
})
it('formats a valid ISO timestamp', () => {
expect(formatDateTimeSafe(REAL_ISO, 'en')).toMatch(/2023/)
})
it('formats an ISO timestamp with an explicit timezone offset', () => {
expect(formatDateTimeSafe('2023-11-15T01:13:20+03:00', 'en')).toMatch(/2023/)
})
it('returns null for null', () => { expect(formatDateTimeSafe(null, 'en')).toBeNull() })
it('returns null for undefined', () => { expect(formatDateTimeSafe(undefined, 'en')).toBeNull() })
it('returns null for an empty string', () => { expect(formatDateTimeSafe('', 'en')).toBeNull() })
it('returns null for an invalid string', () => { expect(formatDateTimeSafe('not-a-date', 'en')).toBeNull() })
it('returns null for numeric zero', () => { expect(formatDateTimeSafe(0, 'en')).toBeNull() })
it('returns null for the 1970 epoch ISO', () => {
expect(formatDateTimeSafe('1970-01-01T00:00:00Z', 'en')).toBeNull()
})
it('returns null for a tiny placeholder epoch (e.g. 2)', () => {
expect(formatDateTimeSafe(2, 'en')).toBeNull()
})
it('returns null for a non-finite number', () => {
expect(formatDateTimeSafe(Number.NaN, 'en')).toBeNull()
expect(formatDateTimeSafe(Number.POSITIVE_INFINITY, 'en')).toBeNull()
})
it('renders a valid date in Arabic locale', () => {
const ar = formatDateTimeSafe(REAL_SECONDS, 'ar')
expect(ar).toBeTruthy()
expect(ar).not.toMatch(/1970|Invalid Date/)
// Arabic-Indic digits present (ar-SA formatting)
expect(ar).toMatch(/[٠-٩]/)
})
it('returns null in Arabic locale for an unavailable date (caller shows the AR fallback)', () => {
expect(formatDateTimeSafe(0, 'ar')).toBeNull()
expect(formatDateTimeSafe(null, 'ar')).toBeNull()
})
})