| import { describe, it, expect } from 'vitest' |
| import { formatDateTimeSafe } from './format' |
|
|
| |
| 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/) |
| |
| 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() |
| }) |
| }) |
|
|