Files
openclaw/src/auto-reply/reply/queue/state.test.ts
2026-04-04 08:05:49 +01:00

63 lines
1.7 KiB
TypeScript

import { afterEach, describe, expect, it } from "vitest";
import { clearFollowupQueue, getFollowupQueue, refreshQueuedFollowupSession } from "./state.js";
import type { FollowupRun } from "./types.js";
const QUEUE_KEY = "agent:main:dm:test";
afterEach(() => {
clearFollowupQueue(QUEUE_KEY);
});
function makeRun(): FollowupRun["run"] {
return {
agentId: "main",
agentDir: "/tmp/agent",
sessionId: "session-1",
sessionKey: QUEUE_KEY,
sessionFile: "/tmp/session-1.jsonl",
workspaceDir: "/tmp/workspace",
config: {} as FollowupRun["run"]["config"],
provider: "anthropic",
model: "claude-opus-4-6",
authProfileId: "profile-a",
authProfileIdSource: "user",
timeoutMs: 30_000,
blockReplyBreak: "message_end",
};
}
describe("refreshQueuedFollowupSession", () => {
it("retargets queued runs to the persisted selection", () => {
const queue = getFollowupQueue(QUEUE_KEY, { mode: "queue" });
const lastRun = makeRun();
const queuedRun: FollowupRun = {
prompt: "queued message",
enqueuedAt: Date.now(),
run: makeRun(),
};
queue.lastRun = lastRun;
queue.items.push(queuedRun);
refreshQueuedFollowupSession({
key: QUEUE_KEY,
nextProvider: "openai",
nextModel: "gpt-4o",
nextAuthProfileId: undefined,
nextAuthProfileIdSource: undefined,
});
expect(queue.lastRun).toMatchObject({
provider: "openai",
model: "gpt-4o",
authProfileId: undefined,
authProfileIdSource: undefined,
});
expect(queue.items[0]?.run).toMatchObject({
provider: "openai",
model: "gpt-4o",
authProfileId: undefined,
authProfileIdSource: undefined,
});
});
});