53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
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");
|
|
});
|
|
});
|