42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { runNarrativeConsistencyChecks } from './narrativeConsistencyChecks';
|
|
|
|
describe('narrativeConsistencyChecks', () => {
|
|
it('flags too many active threads and missing payoff chronicle', () => {
|
|
const issues = runNarrativeConsistencyChecks({
|
|
memory: {
|
|
discoveredFactIds: [],
|
|
inferredFactIds: [],
|
|
activeThreadIds: ['a', 'b', 'c', 'd', 'e'],
|
|
resolvedScarIds: [],
|
|
recentCarrierIds: [],
|
|
chronicle: [],
|
|
},
|
|
threadContracts: [
|
|
{
|
|
id: 'contract-1',
|
|
threadId: 'thread-1',
|
|
issuerActorId: null,
|
|
narrativeType: 'investigation',
|
|
currentStepId: null,
|
|
visibleStage: 0,
|
|
steps: [],
|
|
followupThreadIds: [],
|
|
},
|
|
],
|
|
branchBudgetStatus: {
|
|
currentMajorDivergences: 1,
|
|
maxMajorDivergences: 3,
|
|
currentEndingFamilies: 1,
|
|
maxEndingFamilies: 5,
|
|
pressure: 'low',
|
|
issues: [],
|
|
},
|
|
});
|
|
|
|
expect(issues.some((issue) => issue.category === 'pacing')).toBe(true);
|
|
expect(issues.some((issue) => issue.category === 'payoff')).toBe(true);
|
|
});
|
|
});
|