32 lines
1.3 KiB
JavaScript
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');
|
|
});
|