graph-seed-service.test.js
2.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
* Unit Tests — graph-seed-service.js verifyCounts() (T4)
* Runs the real seed functions against the actual repo fs (system/agents/,
* system/templates/, data/companies/) into a throwaway GRAPH_DB_PATH, then
* asserts verifyCounts() reports ok:true against that freshly-seeded data,
* and that it actually catches a mismatch when the DB drifts from the fs.
*/
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
import fs from 'fs';
describe('graph-seed-service verifyCounts', () => {
let seedService;
let graphDb;
const TEST_DB_PATH = '/tmp/test-graph-seed-service.sqlite';
beforeAll(() => {
if (fs.existsSync(TEST_DB_PATH)) fs.unlinkSync(TEST_DB_PATH);
process.env.GRAPH_DB_PATH = TEST_DB_PATH;
delete require.cache[require.resolve('../../services/graph-db')];
delete require.cache[require.resolve('../../services/graph-seed-service')];
graphDb = require('../../services/graph-db');
seedService = require('../../services/graph-seed-service');
});
afterAll(() => {
try { fs.unlinkSync(TEST_DB_PATH); } catch {}
try { fs.unlinkSync(`${TEST_DB_PATH}-shm`); } catch {}
try { fs.unlinkSync(`${TEST_DB_PATH}-wal`); } catch {}
delete process.env.GRAPH_DB_PATH;
});
it('reports ok:true against a freshly-seeded DB (no drift)', () => {
seedService.seedGlobalAgents();
seedService.seedTemplates();
seedService.seedCompanyAgents();
const v = seedService.verifyCounts();
expect(v.mismatches).toEqual([]);
expect(v.ok).toBe(true);
});
it('catches a mismatch when the DB has a row the filesystem does not back', () => {
const db = graphDb.getDb();
const now = new Date().toISOString();
db.prepare(`
INSERT INTO system_agents (id, name, scope, owner_company_id, source_kind, legacy_path, status, benchmark_score, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
`).run('bogus-agent-no-fs-backing', 'Bogus', 'public', null, 'global_agent', 'system/agents/bogus-agent-no-fs-backing', 'active', null, now, now);
const v = seedService.verifyCounts();
expect(v.ok).toBe(false);
expect(v.mismatches.some(m => m.check.includes("source_kind='global_agent'"))).toBe(true);
db.prepare('DELETE FROM system_agents WHERE id = ?').run('bogus-agent-no-fs-backing');
});
});