import { describe, expect, it, vi } from "vitest"; import { imessagePlugin } from "./channel.js"; describe("imessagePlugin outbound", () => { const cfg = { channels: { imessage: { mediaMaxMb: 3, }, }, }; it("forwards replyToId on direct sendText adapter path", async () => { const sendIMessage = vi.fn().mockResolvedValue({ messageId: "m-text" }); const sendText = imessagePlugin.outbound?.sendText; expect(sendText).toBeDefined(); const result = await sendText!({ cfg, to: "chat_id:12", text: "hello", accountId: "default", replyToId: "reply-1", deps: { sendIMessage }, }); expect(sendIMessage).toHaveBeenCalledWith( "chat_id:12", "hello", expect.objectContaining({ accountId: "default", replyToId: "reply-1", maxBytes: 3 * 1024 * 1024, }), ); expect(result).toEqual({ channel: "imessage", messageId: "m-text" }); }); it("forwards replyToId on direct sendMedia adapter path", async () => { const sendIMessage = vi.fn().mockResolvedValue({ messageId: "m-media" }); const sendMedia = imessagePlugin.outbound?.sendMedia; expect(sendMedia).toBeDefined(); const result = await sendMedia!({ cfg, to: "chat_id:77", text: "caption", mediaUrl: "https://example.com/pic.png", accountId: "acct-1", replyToId: "reply-2", deps: { sendIMessage }, }); expect(sendIMessage).toHaveBeenCalledWith( "chat_id:77", "caption", expect.objectContaining({ mediaUrl: "https://example.com/pic.png", accountId: "acct-1", replyToId: "reply-2", maxBytes: 3 * 1024 * 1024, }), ); expect(result).toEqual({ channel: "imessage", messageId: "m-media" }); }); it("forwards mediaLocalRoots on direct sendMedia adapter path", async () => { const sendIMessage = vi.fn().mockResolvedValue({ messageId: "m-media-local" }); const sendMedia = imessagePlugin.outbound?.sendMedia; expect(sendMedia).toBeDefined(); const mediaLocalRoots = ["/tmp/workspace"]; const result = await sendMedia!({ cfg, to: "chat_id:88", text: "caption", mediaUrl: "/tmp/workspace/pic.png", mediaLocalRoots, accountId: "acct-1", deps: { sendIMessage }, }); expect(sendIMessage).toHaveBeenCalledWith( "chat_id:88", "caption", expect.objectContaining({ mediaUrl: "/tmp/workspace/pic.png", mediaLocalRoots, accountId: "acct-1", maxBytes: 3 * 1024 * 1024, }), ); expect(result).toEqual({ channel: "imessage", messageId: "m-media-local" }); }); });