Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
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);
|
|
});
|
|
});
|