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