Versie 0.2.0

This commit is contained in:
Atreides Assets committed 2026-10-29 11:57:29 +01:00
commit e77d8fd373
495 files changed
+81026

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
// Generated, do not edit. sha256:8977ec53367552532dbe1dc9feea008e924ada2d008cd083942fb7af8c711d6b
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { readFile } from 'node:fs/promises';
import { CONFIG } from '../../shared/config.js';
import { BASELINE_VERSION } from '../../server/db/migrations.js';
const bron = await readFile(new URL('../../server/db/migrations.js', import.meta.url), 'utf-8');
const versies = [...bron.matchAll(/^ {2}(\d+): \(\) =>/gm)].map(m => Number(m[1]));
describe('migratie-versies', () => {
it('bewaakt zichzelf: het MIGRATIONS-object staat er nog', () => {
assert.match(bron, /const MIGRATIONS = \{/, 'de migratieketen is niet meer te vinden in de bron');
});
it('sluit aan op de baseline: CONFIG.SCHEMA_VERSION is de hoogste bekende versie', () => {
const hoogste = versies.length ? Math.max(...versies) : BASELINE_VERSION;
assert.equal(hoogste, CONFIG.SCHEMA_VERSION,
`hoogste versie is ${hoogste}, CONFIG.SCHEMA_VERSION is ${CONFIG.SCHEMA_VERSION}. ` +
`Te laag: de nieuwste migratie draait nooit. Te hoog: elke bestaande DB crasht.`);
});
it('begint na de baseline, want 1 t/m 59 komen niet terug', () => {
const teLaag = versies.filter(v => v <= BASELINE_VERSION);
assert.deepEqual(teLaag, [], `een migratie naar versie ${BASELINE_VERSION} of lager kan niet bestaan`);
});
it('heeft geen gaten in de reeks', () => {
if (!versies.length) return;
const gesorteerd = [...versies].sort((a, b) => a - b);
const ontbreekt = [];
for (let v = BASELINE_VERSION + 1; v <= gesorteerd.at(-1); v++) {
if (!versies.includes(v)) ontbreekt.push(v);
}
assert.deepEqual(ontbreekt, [],
'een ontbrekende versie maakt de app onopenbaar voor wie op de vorige versie zat');
});
it('bevat elke versie precies één keer', () => {
assert.equal(new Set(versies).size, versies.length, 'dubbele migratie-sleutel');
});
});