| import { beforeEach, describe, expect, it, vi } from "vitest"; |
|
|
| const { callGatewayToolMock } = vi.hoisted(() => ({ |
| callGatewayToolMock: vi.fn(), |
| })); |
|
|
| vi.mock("../agent-scope.js", () => ({ |
| resolveSessionAgentId: () => "agent-123", |
| })); |
|
|
| import { createCronTool } from "./cron-tool.js"; |
|
|
| describe("cron tool flat-params", () => { |
| beforeEach(() => { |
| callGatewayToolMock.mockClear(); |
| callGatewayToolMock.mockResolvedValue({ ok: true }); |
| }); |
|
|
| it("preserves explicit top-level sessionKey during flat-params recovery", async () => { |
| const tool = createCronTool( |
| { agentSessionKey: "agent:main:discord:channel:ops" }, |
| { callGatewayTool: callGatewayToolMock }, |
| ); |
| await tool.execute("call-flat-session-key", { |
| action: "add", |
| sessionKey: "agent:main:telegram:group:-100123:topic:99", |
| schedule: { kind: "at", at: new Date(123).toISOString() }, |
| message: "do stuff", |
| }); |
|
|
| const [method, _gatewayOpts, params] = callGatewayToolMock.mock.calls[0] as [ |
| string, |
| unknown, |
| { sessionKey?: string }, |
| ]; |
| expect(method).toBe("cron.add"); |
| expect(params.sessionKey).toBe("agent:main:telegram:group:-100123:topic:99"); |
| }); |
| }); |
|
|