Files
AtreidesAssetsFree/tests/db/time.test.mjs
T
2026-10-29 11:57:29 +01:00

125 lines
4.7 KiB
JavaScript

// Generated, do not edit. sha256:e2e0937b7b3c760761ff1e6af43b751d527084ca1706a0de98999069ed45ca25
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { toUtcIso, toLocalIso, localDate, localDateNl, dayNl, localDateTimeNl, localTime, localDateTime, nowUtcIso, nowLocalIso, setDateLocale } from '../../shared/time.js';
describe('tijd: opslaan (naïef lokaal naar UTC)', () => {
it('rekent zomertijd en wintertijd verschillend om', () => {
assert.equal(toUtcIso('2026-06-20T14:30:00'), '2026-06-20T12:30:00Z');
assert.equal(toUtcIso('2026-01-15T14:30:00'), '2026-01-15T13:30:00Z');
});
it('accepteert een datetime-local-waarde zonder seconden', () => {
assert.equal(toUtcIso('2026-06-20T14:30'), '2026-06-20T12:30:00Z');
});
it('laat een waarde die al UTC is ongemoeid, dus omzetten is idempotent', () => {
const al = '2026-06-20T12:30:00.000Z';
assert.equal(toUtcIso(al), al);
assert.equal(toUtcIso(toUtcIso(al)), al);
});
it('raakt een kalenderdatum en lege waarden niet aan', () => {
assert.equal(toUtcIso('2026-06-20'), '2026-06-20');
assert.equal(toUtcIso(null), null);
assert.equal(toUtcIso(''), '');
});
});
describe('tijd: heen-en-terug', () => {
it('komt exact terug, ook op de twee zomertijdgrenzen', () => {
for (const t of ['2026-06-20T14:30:00', '2026-01-15T00:00:00', '2026-03-29T04:00:00',
'2026-10-25T04:00:00', '2025-12-31T23:59:59', '2024-02-29T12:00:00']) {
assert.equal(toLocalIso(toUtcIso(t)), t, `heen-en-terug faalt op ${t}`);
}
});
it('houdt het moment gelijk, ook als de kalenderdag verschuift', () => {
const utc = toUtcIso('2026-06-20T00:00:00');
assert.equal(utc, '2026-06-19T22:00:00Z');
assert.equal(toLocalIso(utc), '2026-06-20T00:00:00');
});
});
describe('tijd: tonen', () => {
it('toont de lokale dag en niet de UTC-dag', () => {
assert.equal(localDate('2026-06-19T22:00:00Z'), '2026-06-20');
assert.equal(localTime('2026-06-19T22:00:00Z'), '00:00');
assert.equal(localDateTime('2026-06-19T22:00:00Z'), '2026-06-20 00:00');
});
it('toont een zomers tijdstempel twee uur later dan de UTC-tekst', () => {
assert.equal(localTime('2025-11-01T14:52:43.000Z'), '15:52');
assert.equal(localTime('2026-06-20T12:30:00.000Z'), '14:30');
});
it('geeft lege tekst voor een lege waarde in plaats van te gooien', () => {
for (const leeg of [null, undefined, '']) {
assert.equal(localDate(leeg), '');
assert.equal(localTime(leeg), '');
assert.equal(localDateTime(leeg), '');
}
});
});
describe('tijd: nu', () => {
it('geeft nowUtcIso in UTC en nowLocalIso zonder zone', () => {
assert.match(nowUtcIso(), /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/);
assert.match(nowLocalIso(), /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/);
});
it('geeft voor hetzelfde moment dezelfde tijd in beide vormen', () => {
const utc = nowUtcIso();
assert.equal(toLocalIso(utc).slice(0, 16), nowLocalIso().slice(0, 16));
});
});
describe('localDateNl', () => {
it('zet de dag vooraan, met streepjes', () => {
assert.equal(localDateNl('2026-06-20T12:30:00Z'), '20-06-2026');
});
it('vult de dag en de maand aan tot twee cijfers', () => {
assert.equal(localDateNl('2026-01-01T12:00:00Z'), '01-01-2026');
});
it('volgt de LOKALE dag en niet de UTC-dag', () => {
assert.equal(localDateNl('2026-06-20T22:30:00Z'), '21-06-2026');
assert.equal(localDate('2026-06-20T22:30:00Z'), '2026-06-21', 'dezelfde dag als localDate');
});
it('geeft lege tekst op een LEGE waarde, en gooit op onleesbare invoer', () => {
for (const leeg of [null, undefined, '']) assert.equal(localDateNl(leeg), '');
assert.throws(() => localDateNl('geen datum'), /Onleesbaar tijdstempel/);
});
});
describe('dayNl en localDateTimeNl', () => {
it('draait een kalenderdatum om zonder tijdzone', () => {
assert.equal(dayNl('2026-01-01'), '01-01-2026');
assert.equal(dayNl('2026-12-31'), '31-12-2026');
});
it('geeft leeg op leeg en laat iets wat geen datum is staan', () => {
for (const leeg of [null, undefined, '']) assert.equal(dayNl(leeg), '');
assert.equal(dayNl('onbekend'), 'onbekend');
});
it('zet datum en klok samen neer, in lokale tijd', () => {
assert.equal(localDateTimeNl('2026-06-19T22:00:00Z'), '20-06-2026 00:00');
assert.equal(localDateTimeNl(null), '');
});
it('volgt de taal van de app, en terug', () => {
setDateLocale('en-US');
try {
assert.equal(dayNl('2026-06-08'), '06/08/2026');
assert.equal(localDateTimeNl('2026-06-19T22:00:00Z'), '06/20/2026 00:00');
} finally {
setDateLocale('nl-NL');
}
assert.equal(dayNl('2026-06-08'), '08-06-2026', 'terug naar Nederlands, ook met de opmaak in de cache');
});
});