File size: 1,747 Bytes
4440aec | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | // Tests normalized session queue cleanup through the canonical lane resolver.
import { afterEach, describe, expect, it, vi } from "vitest";
import { clearSessionQueues } from "./cleanup.js";
const followupQueueMocks = vi.hoisted(() => ({
clearFollowupDrainCallback: vi.fn(),
clearFollowupQueue: vi.fn(() => 2),
}));
const commandQueueMocks = vi.hoisted(() => ({
clearCommandLane: vi.fn(() => 3),
}));
vi.mock("./drain.js", () => ({
clearFollowupDrainCallback: followupQueueMocks.clearFollowupDrainCallback,
}));
vi.mock("./state.js", () => ({
clearFollowupQueue: followupQueueMocks.clearFollowupQueue,
}));
vi.mock("../../../process/command-queue.js", () => ({
clearCommandLane: commandQueueMocks.clearCommandLane,
}));
describe("clearSessionQueues", () => {
afterEach(() => {
followupQueueMocks.clearFollowupDrainCallback.mockReset();
followupQueueMocks.clearFollowupQueue.mockReset().mockReturnValue(2);
commandQueueMocks.clearCommandLane.mockReset().mockReturnValue(3);
});
it("clears each normalized key once using canonical session lanes", () => {
const result = clearSessionQueues([
" alpha ",
undefined,
"",
" \t ",
"alpha",
" session:beta ",
"session:beta",
]);
expect(result).toEqual({
followupCleared: 4,
laneCleared: 6,
keys: ["alpha", "session:beta"],
});
expect(followupQueueMocks.clearFollowupQueue.mock.calls).toEqual([["alpha"], ["session:beta"]]);
expect(followupQueueMocks.clearFollowupDrainCallback.mock.calls).toEqual([
["alpha"],
["session:beta"],
]);
expect(commandQueueMocks.clearCommandLane.mock.calls).toEqual([
["session:alpha"],
["session:beta"],
]);
});
});
|