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