66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import {
|
|
createRectificationActivityReceiptState,
|
|
reduceRectificationActivityReceipt,
|
|
receiptFromRectificationActivityState,
|
|
} from "../src/lib/rectification-activity-receipt";
|
|
|
|
test("a successful retry clears the same tool's earlier failure", () => {
|
|
let state = createRectificationActivityReceiptState();
|
|
for (const event of [
|
|
{ tool: "rectification-read-case", status: "completed" },
|
|
{ tool: "rectification-propose-evidence", status: "failed" },
|
|
{ tool: "rectification-propose-evidence", status: "started" },
|
|
{ tool: "rectification-propose-evidence", status: "completed" },
|
|
{ tool: "rectification-confirm-evidence", status: "completed" },
|
|
] as const) {
|
|
state = reduceRectificationActivityReceipt(state, event);
|
|
}
|
|
|
|
assert.deepEqual(receiptFromRectificationActivityState(state), {
|
|
steps: [
|
|
"rectification-read-case",
|
|
"rectification-propose-evidence",
|
|
"rectification-confirm-evidence",
|
|
],
|
|
methods: [],
|
|
});
|
|
});
|
|
|
|
test("an unrecovered latest tool failure remains visible", () => {
|
|
let state = createRectificationActivityReceiptState();
|
|
state = reduceRectificationActivityReceipt(state, {
|
|
tool: "rectification-read-case",
|
|
status: "completed",
|
|
});
|
|
state = reduceRectificationActivityReceipt(state, {
|
|
tool: "rectification-propose-evidence",
|
|
status: "failed",
|
|
});
|
|
|
|
assert.deepEqual(receiptFromRectificationActivityState(state), {
|
|
steps: ["rectification-read-case"],
|
|
methods: [],
|
|
failedTool: "rectification-propose-evidence",
|
|
});
|
|
});
|
|
|
|
test("a later failure overrides an earlier completion for the same tool", () => {
|
|
let state = createRectificationActivityReceiptState();
|
|
state = reduceRectificationActivityReceipt(state, {
|
|
tool: "rectification-read-case",
|
|
status: "completed",
|
|
});
|
|
state = reduceRectificationActivityReceipt(state, {
|
|
tool: "rectification-read-case",
|
|
status: "failed",
|
|
});
|
|
|
|
assert.deepEqual(receiptFromRectificationActivityState(state), {
|
|
steps: ["rectification-read-case"],
|
|
methods: [],
|
|
failedTool: "rectification-read-case",
|
|
});
|
|
});
|