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

+65
View File
@@ -0,0 +1,65 @@
// Generated, do not edit. sha256:fefc7c108aded894b1e2af3e5fbbedc3eac1b26a65f9c5ddfd7154896dda96a0
import { describe, it, before } from 'node:test';
import assert from 'node:assert/strict';
import { openBaselineDb } from '../helpers/baseline-db.mjs';
import { CONFIG } from '../../shared/config.js';
const EIGEN_ONTSTAAN = {
ScanLog: 'scannedAt',
ReconcileProposal: 'detectedAt',
ImportBatch: 'importedAt',
AiToolCall: 'occurredAt',
AiToolCallMessage: 'occurredAt',
BusSignal: 'occurredAt',
ChangeLog: 'occurredAt',
IntegrationCall: 'occurredAt',
};
const GEEN_RIJ_IDENTITEIT = ['ApiCallMetric', 'Schema'];
let KOLOMMEN;
before(() => {
const db = openBaselineDb();
KOLOMMEN = {};
for (const t of CONFIG.DB_TABLES) {
KOLOMMEN[t] = db.prepare(`PRAGMA table_info(${t})`).all().map(k => k.name);
}
db.close();
});
describe('tijdstempels: createdAt waar het ontstaan nog nergens staat', () => {
it('geeft elke tabel een createdAt, op de vrijgestelde na', () => {
const missend = CONFIG.DB_TABLES.filter(t =>
!(t in EIGEN_ONTSTAAN) && !GEEN_RIJ_IDENTITEIT.includes(t) && !KOLOMMEN[t].includes('createdAt'));
assert.deepEqual(missend, [],
'een nieuwe tabel hoort een createdAt te krijgen, of een gemotiveerde vrijstelling hierboven');
});
it('houdt de vrijgestelde tabellen vrij, want anders staan er twee namen voor hetzelfde moment', () => {
for (const [tabel, kolom] of Object.entries(EIGEN_ONTSTAAN)) {
assert.ok(KOLOMMEN[tabel].includes(kolom), `${tabel} zou zijn ontstaan in ${kolom} bewaren`);
assert.ok(!KOLOMMEN[tabel].includes('createdAt'),
`${tabel} heeft ${kolom} én createdAt: dat is een tweede waarheid over hetzelfde moment`);
}
for (const tabel of GEEN_RIJ_IDENTITEIT) {
assert.ok(!KOLOMMEN[tabel].includes('createdAt'), `${tabel} heeft geen rij om een moment aan te hangen`);
}
});
});
describe('tijdstempels: updatedAt waar een wijziging betekenis heeft', () => {
it('geeft elke getrackte tabel een updatedAt', () => {
const missend = CONFIG.DB_HISTORY.TRACKED.filter(t => !KOLOMMEN[t].includes('updatedAt'));
assert.deepEqual(missend, [],
'een tabel die meedoet in het wijzigingslogboek hoort te kunnen zeggen wanneer hij wijzigde');
});
it('geeft hem NIET aan een tabel waar niemand die vraag stelt', () => {
const teveel = CONFIG.DB_TABLES.filter(t =>
!CONFIG.DB_HISTORY.TRACKED.includes(t) && t !== 'PriceHistory'
&& t !== 'DashboardProfile' && KOLOMMEN[t].includes('updatedAt'));
assert.deepEqual(teveel, [],
'updatedAt op een tabel die niet meedoet: die kolom blijft per definitie leeg');
});
});