| 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<string, unknown>) { |
| 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"); |
| }); |
| }); |
|
|