Verified: - pnpm install --frozen-lockfile - pnpm build - pnpm check - pnpm test:macmini Co-authored-by: hou-rong <8758438+hou-rong@users.noreply.github.com> Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
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");
|
|
});
|
|
});
|