- Approval gate steps pause and await human resolution - appendStepEvent wired into markStep, failRun, dispatchAgentStep - Trigger rule unit tests (6 variants) - New parallel-research flow with one_success trigger
32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { evaluateTriggerRule } from '../flow-runner-decisions.js';
|
|
|
|
describe('evaluateTriggerRule', () => {
|
|
it('all_success requires all deps done', () => {
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(['a', 'b']), new Set(), new Set())).toBe(true);
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(['a']), new Set(), new Set())).toBe(false);
|
|
});
|
|
|
|
it('one_success fires on first completion', () => {
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(['a']), new Set(), new Set(), 'one_success')).toBe(true);
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(), new Set(), new Set(), 'one_success')).toBe(false);
|
|
});
|
|
|
|
it('all_done includes skipped deps', () => {
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(['a']), new Set(['b']), new Set(), 'all_done')).toBe(true);
|
|
});
|
|
|
|
it('all_success treats excluded deps as satisfied', () => {
|
|
expect(evaluateTriggerRule(['a', 'b'], new Set(['a']), new Set(), new Set(['b']))).toBe(true);
|
|
});
|
|
|
|
it('defaults to all_success', () => {
|
|
expect(evaluateTriggerRule(['a'], new Set(['a']), new Set(), new Set())).toBe(true);
|
|
expect(evaluateTriggerRule(['a'], new Set(), new Set(), new Set())).toBe(false);
|
|
});
|
|
|
|
it('returns true for empty deps', () => {
|
|
expect(evaluateTriggerRule([], new Set(), new Set(), new Set())).toBe(true);
|
|
});
|
|
});
|