test(session): cover historical catalog comparison failures

This commit is contained in:
Dudu-0223 committed 2026-09-08 23:28:50 +08:00
1 parent 2db4bdd31d
commit 399d7313c4
1 file changed
+37
@@ -684,6 +684,43 @@ describe('normalizeSessionSnapshot', () => {
].join('\n'))
})
it('rejects an empty historical comparison input', () => {
expect(() => omitSubagentCatalogForHistoricalComparison('\n'))
.toThrow('session snapshot must start with a session header')
})
it('preserves snapshots and source references when no catalog fact is present', () => {
const normalized = [
{ type: 'session', id: '{{session:1}}' },
{ type: 'tool/call', data: { callId: 'result' } },
{ type: 'tool/result', data: { callId: 'result' }, sourceEventSeqs: [0] },
].map(record => JSON.stringify(record)).join('\n') + '\n'
expect(omitSubagentCatalogForHistoricalComparison(normalized)).toBe(normalized)
})
it.each(['0', 0.5, -1])('refuses malformed source references during historical comparison: %s', (source) => {
const normalized = [
{ type: 'session', id: '{{session:1}}' },
{ type: 'subagent/catalog', data: { childId: '{{session:2}}' } },
{ type: 'tool/result', data: { callId: 'result' }, sourceEventSeqs: [source] },
].map(record => JSON.stringify(record)).join('\n')
expect(() => omitSubagentCatalogForHistoricalComparison(normalized))
.toThrow('normalized sourceEventSeqs must contain non-negative safe integers')
})
it('refuses to remove a catalog fact cited by a retained event', () => {
const normalized = [
{ type: 'session', id: '{{session:1}}' },
{ type: 'subagent/catalog', data: { childId: '{{session:2}}' } },
{ type: 'tool/result', data: { callId: 'result' }, sourceEventSeqs: [0] },
].map(record => JSON.stringify(record)).join('\n')
expect(() => omitSubagentCatalogForHistoricalComparison(normalized))
.toThrow('historical comparison cannot omit cited catalog event 0')
})
it('migrates and re-packs multi-session fixtures after relationship-preserving id redaction', () => {
const raw = [
JSON.stringify({ type: 'session', version: 0, id: '{{session:1}}', createdAt: 0, delegationDepth: 0 }),