import { beforeEach, describe, expect, it, vi } from "vitest"; const rpcMock = vi.fn(); const loadSendReactions = async () => await import("./send-reactions.js"); vi.mock("../config/config.js", async (importOriginal) => { const actual = await importOriginal(); return { ...actual, loadConfig: () => ({}), }; }); vi.mock("./accounts.js", () => ({ resolveSignalAccount: () => ({ accountId: "default", enabled: true, baseUrl: "http://signal.local", configured: true, config: { account: "+15550001111" }, }), })); vi.mock("./client.js", () => ({ signalRpcRequest: (...args: unknown[]) => rpcMock(...args), })); describe("sendReactionSignal", () => { beforeEach(() => { rpcMock.mockReset().mockResolvedValue({ timestamp: 123 }); vi.resetModules(); }); it("uses recipients array and targetAuthor for uuid dms", async () => { const { sendReactionSignal } = await loadSendReactions(); await sendReactionSignal("uuid:123e4567-e89b-12d3-a456-426614174000", 123, "🔥"); const params = rpcMock.mock.calls[0]?.[1] as Record; expect(rpcMock).toHaveBeenCalledWith("sendReaction", expect.any(Object), expect.any(Object)); expect(params.recipients).toEqual(["123e4567-e89b-12d3-a456-426614174000"]); expect(params.groupIds).toBeUndefined(); expect(params.targetAuthor).toBe("123e4567-e89b-12d3-a456-426614174000"); expect(params).not.toHaveProperty("recipient"); expect(params).not.toHaveProperty("groupId"); }); it("uses groupIds array and maps targetAuthorUuid", async () => { const { sendReactionSignal } = await loadSendReactions(); await sendReactionSignal("", 123, "✅", { groupId: "group-id", targetAuthorUuid: "uuid:123e4567-e89b-12d3-a456-426614174000", }); const params = rpcMock.mock.calls[0]?.[1] as Record; expect(params.recipients).toBeUndefined(); expect(params.groupIds).toEqual(["group-id"]); expect(params.targetAuthor).toBe("123e4567-e89b-12d3-a456-426614174000"); }); it("defaults targetAuthor to recipient for removals", async () => { const { removeReactionSignal } = await loadSendReactions(); await removeReactionSignal("+15551230000", 456, "❌"); const params = rpcMock.mock.calls[0]?.[1] as Record; expect(params.recipients).toEqual(["+15551230000"]); expect(params.targetAuthor).toBe("+15551230000"); expect(params.remove).toBe(true); }); });