Slack: test shared interactive renderer
This commit is contained in:
parent
6ed8ad1844
commit
e77aa26af6
55
extensions/slack/src/shared-interactive.test.ts
Normal file
55
extensions/slack/src/shared-interactive.test.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { buildSlackInteractiveBlocks } from "./shared-interactive.js";
|
||||
|
||||
describe("buildSlackInteractiveBlocks", () => {
|
||||
it("renders shared interactive blocks in authored order", () => {
|
||||
expect(
|
||||
buildSlackInteractiveBlocks({
|
||||
blocks: [
|
||||
{
|
||||
type: "select",
|
||||
placeholder: "Pick one",
|
||||
options: [{ label: "Alpha", value: "alpha" }],
|
||||
},
|
||||
{ type: "text", text: "then" },
|
||||
{ type: "buttons", buttons: [{ label: "Retry", value: "retry" }] },
|
||||
],
|
||||
}),
|
||||
).toEqual([
|
||||
expect.objectContaining({
|
||||
type: "actions",
|
||||
block_id: "openclaw_reply_select_1",
|
||||
}),
|
||||
expect.objectContaining({
|
||||
type: "section",
|
||||
text: expect.objectContaining({ text: "then" }),
|
||||
}),
|
||||
expect.objectContaining({
|
||||
type: "actions",
|
||||
block_id: "openclaw_reply_buttons_1",
|
||||
}),
|
||||
]);
|
||||
});
|
||||
|
||||
it("truncates Slack render strings to Block Kit limits", () => {
|
||||
const long = "x".repeat(120);
|
||||
const blocks = buildSlackInteractiveBlocks({
|
||||
blocks: [
|
||||
{ type: "text", text: "y".repeat(3100) },
|
||||
{ type: "select", placeholder: long, options: [{ label: long, value: long }] },
|
||||
{ type: "buttons", buttons: [{ label: long, value: long }] },
|
||||
],
|
||||
});
|
||||
const section = blocks[0] as { text?: { text?: string } };
|
||||
const selectBlock = blocks[1] as {
|
||||
elements?: Array<{ placeholder?: { text?: string } }>;
|
||||
};
|
||||
const buttonBlock = blocks[2] as {
|
||||
elements?: Array<{ value?: string }>;
|
||||
};
|
||||
|
||||
expect((section.text?.text ?? "").length).toBeLessThanOrEqual(3000);
|
||||
expect((selectBlock.elements?.[0]?.placeholder?.text ?? "").length).toBeLessThanOrEqual(75);
|
||||
expect((buttonBlock.elements?.[0]?.value ?? "").length).toBeLessThanOrEqual(75);
|
||||
});
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user