import { beforeEach, describe, expect, it, vi } from "vitest"; const callGatewayMock = vi.fn(); vi.mock("../../gateway/call.js", () => ({ callGateway: (opts: unknown) => callGatewayMock(opts), })); import { resolveAnnounceTarget } from "./sessions-announce-target.js"; describe("resolveAnnounceTarget", () => { beforeEach(() => { callGatewayMock.mockReset(); }); it("derives non-WhatsApp announce targets from the session key", async () => { const target = await resolveAnnounceTarget({ sessionKey: "agent:main:discord:group:dev", displayKey: "agent:main:discord:group:dev", }); expect(target).toEqual({ provider: "discord", to: "channel:dev" }); expect(callGatewayMock).not.toHaveBeenCalled(); }); it("hydrates WhatsApp accountId from sessions.list when available", async () => { callGatewayMock.mockResolvedValueOnce({ sessions: [ { key: "agent:main:whatsapp:group:123@g.us", lastProvider: "whatsapp", lastTo: "123@g.us", lastAccountId: "work", }, ], }); const target = await resolveAnnounceTarget({ sessionKey: "agent:main:whatsapp:group:123@g.us", displayKey: "agent:main:whatsapp:group:123@g.us", }); expect(target).toEqual({ provider: "whatsapp", to: "123@g.us", accountId: "work", }); expect(callGatewayMock).toHaveBeenCalledTimes(1); const first = callGatewayMock.mock.calls[0]?.[0] as | { method?: string } | undefined; expect(first).toBeDefined(); expect(first?.method).toBe("sessions.list"); }); });