Files
clawdbot/src/web/inbound.test.ts
2025-12-26 10:51:08 +01:00

49 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { extractMediaPlaceholder, extractText } from "./inbound.js";
describe("web inbound helpers", () => {
it("prefers the main conversation body", () => {
const body = extractText({
conversation: " hello ",
} as unknown as import("@whiskeysockets/baileys").proto.IMessage);
expect(body).toBe("hello");
});
it("falls back to captions when conversation text is missing", () => {
const body = extractText({
imageMessage: { caption: " caption " },
} as unknown as import("@whiskeysockets/baileys").proto.IMessage);
expect(body).toBe("caption");
});
it("handles document captions", () => {
const body = extractText({
documentMessage: { caption: " doc " },
} as unknown as import("@whiskeysockets/baileys").proto.IMessage);
expect(body).toBe("doc");
});
it("unwraps view-once v2 extension messages", () => {
const body = extractText({
viewOnceMessageV2Extension: {
message: { conversation: " hello " },
},
} as unknown as import("@whiskeysockets/baileys").proto.IMessage);
expect(body).toBe("hello");
});
it("returns placeholders for media-only payloads", () => {
expect(
extractMediaPlaceholder({
imageMessage: {},
} as unknown as import("@whiskeysockets/baileys").proto.IMessage),
).toBe("<media:image>");
expect(
extractMediaPlaceholder({
audioMessage: {},
} as unknown as import("@whiskeysockets/baileys").proto.IMessage),
).toBe("<media:audio>");
});
});