45 lines
1.9 KiB
JavaScript
45 lines
1.9 KiB
JavaScript
// 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');
|
|
});
|
|
});
|