import { beforeEach, describe, expect, it, vi } from "vitest"; const sendMock = vi.fn(); vi.mock("../send.js", () => ({ sendMessageSlack: (...args: unknown[]) => sendMock(...args), })); import { deliverReplies } from "./replies.js"; function baseParams(overrides?: Record) { return { replies: [{ text: "hello" }], target: "C123", token: "xoxb-test", runtime: { log: () => {}, error: () => {}, exit: () => {} }, textLimit: 4000, replyToMode: "off" as const, ...overrides, }; } describe("deliverReplies identity passthrough", () => { beforeEach(() => { sendMock.mockReset(); }); it("passes identity to sendMessageSlack for text replies", async () => { sendMock.mockResolvedValue(undefined); const identity = { username: "Bot", iconEmoji: ":robot:" }; await deliverReplies(baseParams({ identity })); expect(sendMock).toHaveBeenCalledOnce(); expect(sendMock.mock.calls[0][2]).toMatchObject({ identity }); }); it("passes identity to sendMessageSlack for media replies", async () => { sendMock.mockResolvedValue(undefined); const identity = { username: "Bot", iconUrl: "https://example.com/icon.png" }; await deliverReplies( baseParams({ identity, replies: [{ text: "caption", mediaUrls: ["https://example.com/img.png"] }], }), ); expect(sendMock).toHaveBeenCalledOnce(); expect(sendMock.mock.calls[0][2]).toMatchObject({ identity }); }); it("omits identity key when not provided", async () => { sendMock.mockResolvedValue(undefined); await deliverReplies(baseParams()); expect(sendMock).toHaveBeenCalledOnce(); expect(sendMock.mock.calls[0][2]).not.toHaveProperty("identity"); }); });