test(queue): cover collect drain helper states

This commit is contained in:
Peter Steinberger
2026-02-19 07:00:49 +00:00
parent b22deada9e
commit 742fb90571

View File

@@ -3,6 +3,7 @@ import {
applyQueueRuntimeSettings,
buildQueueSummaryPrompt,
clearQueueSummaryState,
drainCollectItemIfNeeded,
previewQueueSummaryPrompt,
} from "./queue-helpers.js";
@@ -111,3 +112,58 @@ describe("queue summary helpers", () => {
expect(state.summaryLines).toEqual([]);
});
});
describe("drainCollectItemIfNeeded", () => {
it("skips when neither force mode nor cross-channel routing is active", async () => {
const seen: number[] = [];
const items = [1];
const result = await drainCollectItemIfNeeded({
forceIndividualCollect: false,
isCrossChannel: false,
items,
run: async (item) => {
seen.push(item);
},
});
expect(result).toBe("skipped");
expect(seen).toEqual([]);
expect(items).toEqual([1]);
});
it("drains one item in force mode", async () => {
const seen: number[] = [];
const items = [1, 2];
const result = await drainCollectItemIfNeeded({
forceIndividualCollect: true,
isCrossChannel: false,
items,
run: async (item) => {
seen.push(item);
},
});
expect(result).toBe("drained");
expect(seen).toEqual([1]);
expect(items).toEqual([2]);
});
it("switches to force mode and returns empty when cross-channel with no queued item", async () => {
let forced = false;
const result = await drainCollectItemIfNeeded({
forceIndividualCollect: false,
isCrossChannel: true,
setForceIndividualCollect: (next) => {
forced = next;
},
items: [],
run: async () => {},
});
expect(result).toBe("empty");
expect(forced).toBe(true);
});
});