Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,124 @@
|
||||
// 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');
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user