Files
openclaw/src/plugin-sdk/slack-message-actions.test.ts

68 lines
1.6 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { handleSlackMessageAction } from "./slack-message-actions.js";
function createInvokeSpy() {
return vi.fn(async (action: Record<string, unknown>) => ({
ok: true,
content: action,
}));
}
describe("handleSlackMessageAction", () => {
it("maps download-file to the internal downloadFile action", async () => {
const invoke = createInvokeSpy();
await handleSlackMessageAction({
providerId: "slack",
ctx: {
action: "download-file",
cfg: {},
params: {
channelId: "C1",
fileId: "F123",
threadId: "111.222",
},
} as never,
invoke: invoke as never,
});
expect(invoke).toHaveBeenCalledWith(
expect.objectContaining({
action: "downloadFile",
fileId: "F123",
channelId: "C1",
threadId: "111.222",
}),
expect.any(Object),
);
});
it("maps download-file target aliases to scope fields", async () => {
const invoke = createInvokeSpy();
await handleSlackMessageAction({
providerId: "slack",
ctx: {
action: "download-file",
cfg: {},
params: {
to: "channel:C2",
fileId: "F999",
replyTo: "333.444",
},
} as never,
invoke: invoke as never,
});
expect(invoke).toHaveBeenCalledWith(
expect.objectContaining({
action: "downloadFile",
fileId: "F999",
channelId: "channel:C2",
threadId: "333.444",
}),
expect.any(Object),
);
});
});