diff options
Diffstat (limited to 'packages/api/tests')
| -rw-r--r-- | packages/api/tests/agent-manager.test.ts | 32 | ||||
| -rw-r--r-- | packages/api/tests/routes.test.ts | 41 |
2 files changed, 70 insertions, 3 deletions
diff --git a/packages/api/tests/agent-manager.test.ts b/packages/api/tests/agent-manager.test.ts index f8e5e12..b426c4e 100644 --- a/packages/api/tests/agent-manager.test.ts +++ b/packages/api/tests/agent-manager.test.ts @@ -169,6 +169,38 @@ vi.mock("@dispatch/core", () => ({ return null; }, appendMessage() {}, + BackgroundShellStore: class MockBackgroundShellStore { + has() { + return false; + } + getResult() { + return Promise.resolve({ status: "error", error: "not found" }); + } + }, + BackgroundTranscriptStore: class MockBackgroundTranscriptStore { + has() { + return false; + } + getResult() { + return Promise.resolve({ status: "error", error: "not found" }); + } + }, + createWebSearchTool() { + return { + name: "web_search", + description: "web search", + parameters: { _type: "z.ZodObject", shape: {} }, + execute: async () => "mock", + }; + }, + createYoutubeTranscribeTool() { + return { + name: "youtube_transcribe", + description: "youtube transcribe", + parameters: { _type: "z.ZodObject", shape: {} }, + execute: async () => "mock", + }; + }, })); // Import after mock is defined (Vitest hoists vi.mock automatically) diff --git a/packages/api/tests/routes.test.ts b/packages/api/tests/routes.test.ts index 05f8358..c3c7eaa 100644 --- a/packages/api/tests/routes.test.ts +++ b/packages/api/tests/routes.test.ts @@ -170,6 +170,38 @@ vi.mock("@dispatch/core", () => ({ return null; }, appendMessage() {}, + BackgroundShellStore: class MockBackgroundShellStore { + has() { + return false; + } + getResult() { + return Promise.resolve({ status: "error", error: "not found" }); + } + }, + BackgroundTranscriptStore: class MockBackgroundTranscriptStore { + has() { + return false; + } + getResult() { + return Promise.resolve({ status: "error", error: "not found" }); + } + }, + createWebSearchTool() { + return { + name: "web_search", + description: "web search", + parameters: { _type: "z.ZodObject", shape: {} }, + execute: async () => "mock", + }; + }, + createYoutubeTranscribeTool() { + return { + name: "youtube_transcribe", + description: "youtube transcribe", + parameters: { _type: "z.ZodObject", shape: {} }, + execute: async () => "mock", + }; + }, })); const { app } = await import("../src/app.js"); @@ -241,7 +273,7 @@ describe("POST /chat", () => { expect(res.status).toBe(400); }); - it("returns 409 when agent is already running", async () => { + it("queues message when agent is already running", async () => { // Start a message (non-blocking) await app.request("/chat", { method: "POST", @@ -252,12 +284,15 @@ describe("POST /chat", () => { // Small delay to let the async generator start and emit "running" status await new Promise<void>((r) => setTimeout(r, 20)); - // Immediately send a second — agent should be running + // Send a second — agent should queue it const res = await app.request("/chat", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ tabId: "tab-2", message: "second message" }), }); - expect(res.status).toBe(409); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.status).toBe("queued"); + expect(typeof body.messageId).toBe("string"); }); }); |
