Files
ApiCore/ApiCore-Backend/src/erp-export/erp-time.spec.ts
T

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);
});
});