Files
LWLT-AI/tools/execution-guard.test.mjs
2026-07-13 19:57:46 +08:00

32 lines
1.3 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
const guard = require('../chrome-extension/ltjt-order-assistant/execution-guard.js');
test('a new ERP execution is accepted exactly once', () => {
assert.deepEqual(guard.acceptanceDecision(null, 'execution-1'), {
accepted: true,
status: 'accepted',
reason: ''
});
const existing = { execution_id: 'execution-1', state: 'running' };
const replay = guard.acceptanceDecision(existing, 'execution-1');
assert.equal(replay.accepted, false);
assert.equal(replay.status, 'already_started');
});
test('a different execution id for the same task is blocked', () => {
const result = guard.acceptanceDecision({ execution_id: 'execution-1', state: 'completed' }, 'execution-2');
assert.equal(result.accepted, false);
assert.equal(result.status, 'duplicate_blocked');
});
test('failures after the write boundary become uncertain', () => {
assert.equal(guard.failureState({ state: 'running' }), 'blocked');
assert.equal(guard.failureState({ state: 'write_started' }), 'uncertain');
assert.equal(guard.failureState({ state: 'submitted' }), 'uncertain');
assert.equal(guard.rootTaskId('TASK-1#2'), 'TASK-1');
});