Files
openclaw/src/web/inbound/send-api.test.ts
Tseka Luk c544811559 fix(whatsapp): preserve outbound document filenames (#15594)
Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 8e0d765d1d
Co-authored-by: TsekaLuk <79151285+TsekaLuk@users.noreply.github.com>
Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Reviewed-by: @steipete
2026-02-13 18:54:10 +01:00

55 lines
1.6 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from "vitest";
const recordChannelActivity = vi.fn();
vi.mock("../../infra/channel-activity.js", () => ({
recordChannelActivity: (...args: unknown[]) => recordChannelActivity(...args),
}));
import { createWebSendApi } from "./send-api.js";
describe("createWebSendApi", () => {
const sendMessage = vi.fn(async () => ({ key: { id: "msg-1" } }));
const sendPresenceUpdate = vi.fn(async () => {});
const api = createWebSendApi({
sock: { sendMessage, sendPresenceUpdate },
defaultAccountId: "main",
});
beforeEach(() => {
vi.clearAllMocks();
});
it("uses sendOptions fileName for outbound documents", async () => {
const payload = Buffer.from("pdf");
await api.sendMessage("+1555", "doc", payload, "application/pdf", { fileName: "invoice.pdf" });
expect(sendMessage).toHaveBeenCalledWith(
"1555@s.whatsapp.net",
expect.objectContaining({
document: payload,
fileName: "invoice.pdf",
caption: "doc",
mimetype: "application/pdf",
}),
);
expect(recordChannelActivity).toHaveBeenCalledWith({
channel: "whatsapp",
accountId: "main",
direction: "outbound",
});
});
it("falls back to default document filename when fileName is absent", async () => {
const payload = Buffer.from("pdf");
await api.sendMessage("+1555", "doc", payload, "application/pdf");
expect(sendMessage).toHaveBeenCalledWith(
"1555@s.whatsapp.net",
expect.objectContaining({
document: payload,
fileName: "file",
caption: "doc",
mimetype: "application/pdf",
}),
);
});
});