mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 11:02:51 +00:00
refactor: share tasks handler test helpers
This commit is contained in:
@@ -60,6 +60,32 @@ function createContext() {
|
||||
} as never;
|
||||
}
|
||||
|
||||
async function runTaskHandler(
|
||||
method: "tasks.list" | "tasks.get" | "tasks.cancel",
|
||||
params: Record<string, unknown>,
|
||||
) {
|
||||
const { calls, respond } = captureRespond();
|
||||
await tasksHandlers[method]({
|
||||
req: { type: "req", id: `req-${method}`, method },
|
||||
params,
|
||||
respond,
|
||||
context: createContext(),
|
||||
client: null,
|
||||
isWebchatConnect: () => false,
|
||||
});
|
||||
return {
|
||||
calls,
|
||||
payload: calls[0]?.[1] as TaskResponsePayload | undefined,
|
||||
};
|
||||
}
|
||||
|
||||
async function getTaskPayload(taskId: string) {
|
||||
const { calls, payload } = await runTaskHandler("tasks.get", { taskId });
|
||||
expect(calls[0]?.[0]).toBe(true);
|
||||
expect(payload?.task?.id).toBe(taskId);
|
||||
return { calls, payload };
|
||||
}
|
||||
|
||||
describe("tasks gateway handlers", () => {
|
||||
it("lists task summaries with SDK-facing statuses and filters", async () => {
|
||||
const running = createTaskRecord({
|
||||
@@ -86,22 +112,13 @@ describe("tasks gateway handlers", () => {
|
||||
deliveryStatus: "pending",
|
||||
});
|
||||
|
||||
const { calls, respond } = captureRespond();
|
||||
await tasksHandlers["tasks.list"]({
|
||||
req: { type: "req", id: "req-1", method: "tasks.list" },
|
||||
params: {
|
||||
status: "running",
|
||||
agentId: "main",
|
||||
sessionKey: "agent:main:main",
|
||||
},
|
||||
respond,
|
||||
context: createContext(),
|
||||
client: null,
|
||||
isWebchatConnect: () => false,
|
||||
const { calls, payload } = await runTaskHandler("tasks.list", {
|
||||
status: "running",
|
||||
agentId: "main",
|
||||
sessionKey: "agent:main:main",
|
||||
});
|
||||
|
||||
expect(calls[0]?.[0]).toBe(true);
|
||||
const payload = calls[0]?.[1] as TaskResponsePayload | undefined;
|
||||
expect(payload?.tasks).toHaveLength(1);
|
||||
const listedTask = payload?.tasks?.[0];
|
||||
expect(listedTask?.id).toBe(running.taskId);
|
||||
@@ -128,19 +145,8 @@ describe("tasks gateway handlers", () => {
|
||||
deliveryStatus: "not_applicable",
|
||||
});
|
||||
|
||||
const { calls, respond } = captureRespond();
|
||||
await tasksHandlers["tasks.get"]({
|
||||
req: { type: "req", id: "req-2", method: "tasks.get" },
|
||||
params: { taskId: task.taskId },
|
||||
respond,
|
||||
context: createContext(),
|
||||
client: null,
|
||||
isWebchatConnect: () => false,
|
||||
});
|
||||
const { payload } = await getTaskPayload(task.taskId);
|
||||
|
||||
expect(calls[0]?.[0]).toBe(true);
|
||||
const payload = calls[0]?.[1] as TaskResponsePayload | undefined;
|
||||
expect(payload?.task?.id).toBe(task.taskId);
|
||||
expect(payload?.task?.status).toBe("completed");
|
||||
expect(payload?.task?.title).toBe("Done task");
|
||||
});
|
||||
@@ -172,19 +178,8 @@ describe("tasks gateway handlers", () => {
|
||||
error: "Tool failed\nOpenClaw runtime context (internal): Keep internal details private.",
|
||||
});
|
||||
|
||||
const { calls, respond } = captureRespond();
|
||||
await tasksHandlers["tasks.get"]({
|
||||
req: { type: "req", id: "req-sanitized", method: "tasks.get" },
|
||||
params: { taskId: task.taskId },
|
||||
respond,
|
||||
context: createContext(),
|
||||
client: null,
|
||||
isWebchatConnect: () => false,
|
||||
});
|
||||
const { calls, payload } = await getTaskPayload(task.taskId);
|
||||
|
||||
expect(calls[0]?.[0]).toBe(true);
|
||||
const payload = calls[0]?.[1] as TaskResponsePayload | undefined;
|
||||
expect(payload?.task?.id).toBe(task.taskId);
|
||||
expect(payload?.task?.title).toBe("Compile artifact");
|
||||
expect(payload?.task?.terminalSummary).toBe("Failed after build");
|
||||
expect(payload?.task?.error).toBe("Tool failed");
|
||||
@@ -203,18 +198,12 @@ describe("tasks gateway handlers", () => {
|
||||
deliveryStatus: "pending",
|
||||
});
|
||||
|
||||
const { calls, respond } = captureRespond();
|
||||
await tasksHandlers["tasks.cancel"]({
|
||||
req: { type: "req", id: "req-3", method: "tasks.cancel" },
|
||||
params: { taskId: task.taskId, reason: "user stopped task" },
|
||||
respond,
|
||||
context: createContext(),
|
||||
client: null,
|
||||
isWebchatConnect: () => false,
|
||||
const { calls, payload } = await runTaskHandler("tasks.cancel", {
|
||||
taskId: task.taskId,
|
||||
reason: "user stopped task",
|
||||
});
|
||||
|
||||
expect(calls[0]?.[0]).toBe(true);
|
||||
const payload = calls[0]?.[1] as TaskResponsePayload | undefined;
|
||||
expect(payload?.found).toBe(true);
|
||||
expect(payload?.cancelled).toBe(true);
|
||||
expect(payload?.task?.id).toBe(task.taskId);
|
||||
|
||||
Reference in New Issue
Block a user