openclaw / src /interactive /payload.fallback.test.ts
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
d197cf3 verified
Raw
History Blame Contribute Delete
1.63 kB
import { describe, expect, it } from "vitest";
import { normalizeMessagePresentation, renderMessagePresentationFallbackText } from "./payload.js";
describe("presentation payload controls", () => {
it("keeps typed select commands actionable without exposing callback values", () => {
expect(
renderMessagePresentationFallbackText({
presentation: {
blocks: [
{
type: "select",
placeholder: "Environment",
options: [
{ label: "Canary", action: { type: "command", command: "/deploy canary" } },
{
label: "Production",
action: { type: "command", command: "/deploy production" },
},
{ label: "Opaque", action: { type: "callback", value: "private-callback-token" } },
],
},
],
},
}),
).toBe(
"Environment:\n- Canary: `/deploy canary`\n- Production: `/deploy production`\n- Opaque",
);
});
it("normalizes only the known custom-input question intent", () => {
const action = {
type: "question" as const,
questionId: "ask_0123456789abcdef0123456789abcdef",
};
const presentation = (intent: string) => ({
blocks: [
{ type: "buttons" as const, buttons: [{ label: "Other…", action: { ...action, intent } }] },
],
});
expect(normalizeMessagePresentation(presentation("custom-input"))).toEqual(
presentation("custom-input"),
);
expect(normalizeMessagePresentation(presentation("unknown"))).toBeUndefined();
});
});