mirror of https://github.com/openclaw/openclaw.git
59 lines
2.3 KiB
TypeScript
59 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { isNumericTargetId, sendPayloadWithChunkedTextAndMedia } from "./reply-payload.js";
|
|
|
|
describe("sendPayloadWithChunkedTextAndMedia", () => {
|
|
it("returns empty result when payload has no text and no media", async () => {
|
|
const result = await sendPayloadWithChunkedTextAndMedia({
|
|
ctx: { payload: {} },
|
|
sendText: async () => ({ channel: "test", messageId: "text" }),
|
|
sendMedia: async () => ({ channel: "test", messageId: "media" }),
|
|
emptyResult: { channel: "test", messageId: "" },
|
|
});
|
|
expect(result).toEqual({ channel: "test", messageId: "" });
|
|
});
|
|
|
|
it("sends first media with text and remaining media without text", async () => {
|
|
const calls: Array<{ text: string; mediaUrl: string }> = [];
|
|
const result = await sendPayloadWithChunkedTextAndMedia({
|
|
ctx: {
|
|
payload: { text: "hello", mediaUrls: ["https://a", "https://b"] },
|
|
},
|
|
sendText: async () => ({ channel: "test", messageId: "text" }),
|
|
sendMedia: async (ctx) => {
|
|
calls.push({ text: ctx.text, mediaUrl: ctx.mediaUrl });
|
|
return { channel: "test", messageId: ctx.mediaUrl };
|
|
},
|
|
emptyResult: { channel: "test", messageId: "" },
|
|
});
|
|
expect(calls).toEqual([
|
|
{ text: "hello", mediaUrl: "https://a" },
|
|
{ text: "", mediaUrl: "https://b" },
|
|
]);
|
|
expect(result).toEqual({ channel: "test", messageId: "https://b" });
|
|
});
|
|
|
|
it("chunks text and sends each chunk", async () => {
|
|
const chunks: string[] = [];
|
|
const result = await sendPayloadWithChunkedTextAndMedia({
|
|
ctx: { payload: { text: "alpha beta gamma" } },
|
|
textChunkLimit: 5,
|
|
chunker: () => ["alpha", "beta", "gamma"],
|
|
sendText: async (ctx) => {
|
|
chunks.push(ctx.text);
|
|
return { channel: "test", messageId: ctx.text };
|
|
},
|
|
sendMedia: async () => ({ channel: "test", messageId: "media" }),
|
|
emptyResult: { channel: "test", messageId: "" },
|
|
});
|
|
expect(chunks).toEqual(["alpha", "beta", "gamma"]);
|
|
expect(result).toEqual({ channel: "test", messageId: "gamma" });
|
|
});
|
|
|
|
it("detects numeric target IDs", () => {
|
|
expect(isNumericTargetId("12345")).toBe(true);
|
|
expect(isNumericTargetId(" 987 ")).toBe(true);
|
|
expect(isNumericTargetId("ab12")).toBe(false);
|
|
expect(isNumericTargetId("")).toBe(false);
|
|
});
|
|
});
|