import { describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../../../config/config.js"; import { imessageOutbound } from "./imessage.js"; describe("imessageOutbound", () => { const cfg: OpenClawConfig = { channels: { imessage: { mediaMaxMb: 2, }, }, }; it("passes replyToId through sendText", async () => { const sendIMessage = vi.fn().mockResolvedValue({ messageId: "text-1" }); const sendText = imessageOutbound.sendText; expect(sendText).toBeDefined(); const result = await sendText!({ cfg, to: "chat_id:123", text: "hello", accountId: "default", replyToId: "msg-123", deps: { sendIMessage }, }); expect(sendIMessage).toHaveBeenCalledWith( "chat_id:123", "hello", expect.objectContaining({ replyToId: "msg-123", accountId: "default", maxBytes: 2 * 1024 * 1024, }), ); expect(result).toEqual({ channel: "imessage", messageId: "text-1" }); }); it("passes replyToId through sendMedia", async () => { const sendIMessage = vi.fn().mockResolvedValue({ messageId: "media-1" }); const sendMedia = imessageOutbound.sendMedia; expect(sendMedia).toBeDefined(); const result = await sendMedia!({ cfg, to: "chat_id:123", text: "caption", mediaUrl: "https://example.com/file.jpg", mediaLocalRoots: ["/tmp"], accountId: "acct-1", replyToId: "msg-456", deps: { sendIMessage }, }); expect(sendIMessage).toHaveBeenCalledWith( "chat_id:123", "caption", expect.objectContaining({ mediaUrl: "https://example.com/file.jpg", mediaLocalRoots: ["/tmp"], replyToId: "msg-456", accountId: "acct-1", maxBytes: 2 * 1024 * 1024, }), ); expect(result).toEqual({ channel: "imessage", messageId: "media-1" }); }); });