import { isPlausibleErpDate, parseSeit } from './erp-time'; describe('parseSeit', () => { it.each([ ['2026-01-01', '2026-01-01T00:00:00.000Z'], ['2026-01-01T00:00Z', '2026-01-01T00:00:00.000Z'], ['2026-01-01T08:15:30Z', '2026-01-01T08:15:30.000Z'], ['2026-01-01T08:15:30.1Z', '2026-01-01T08:15:30.100Z'], ['2026-01-01T08:15:30.123Z', '2026-01-01T08:15:30.123Z'], ['2026-01-01T01:00:00+01:00', '2026-01-01T00:00:00.000Z'], ['2025-12-31T21:30:00-02:30', '2026-01-01T00:00:00.000Z'], ])('liest %s als %s (UTC)', (seit, iso) => { expect(parseSeit(seit)?.toISOString()).toBe(iso); }); it.each([ '2026-W01', '20260101', '-2026-01-01', '2026-001', '2026-01-01T00:00', '2026-01-01T24:00Z', '2026-02-29', '2026-04-31', '1999-12-31T23:59:59Z', '2101-01-01', '2100-12-31T23:00:00-02:00', ])('lehnt %s ab', (seit) => { expect(parseSeit(seit)).toBeNull(); }); it('kennt Schalttage', () => { expect(parseSeit('2028-02-29')?.toISOString()).toBe( '2028-02-29T00:00:00.000Z', ); }); }); describe('isPlausibleErpDate', () => { it('lässt nur die Jahre 2000 bis 2100 (UTC) zu', () => { expect(isPlausibleErpDate(new Date('2000-01-01T00:00:00.000Z'))).toBe(true); expect(isPlausibleErpDate(new Date('2100-12-31T23:59:59.999Z'))).toBe(true); expect(isPlausibleErpDate(new Date('1999-12-31T23:59:59.999Z'))).toBe( false, ); expect(isPlausibleErpDate(new Date('2101-01-01T00:00:00.000Z'))).toBe( false, ); expect(isPlausibleErpDate(new Date(Number.NaN))).toBe(false); }); });