Files
openclaw/extensions/slack/src/outbound-payload-harness.ts
2026-04-07 01:16:15 +01:00

39 lines
1.0 KiB
TypeScript

import type { ReplyPayload } from "openclaw/plugin-sdk/reply-runtime";
import { primeChannelOutboundSendMock } from "openclaw/plugin-sdk/testing";
import { vi, type Mock } from "vitest";
import { slackOutbound } from "./outbound-adapter.js";
type OutboundSendMock = Mock<(...args: unknown[]) => Promise<Record<string, unknown>>>;
type SlackOutboundPayloadHarness = {
run: () => Promise<Record<string, unknown>>;
sendMock: OutboundSendMock;
to: string;
};
export function createSlackOutboundPayloadHarness(params: {
payload: ReplyPayload;
sendResults?: Array<{ messageId: string }>;
}): SlackOutboundPayloadHarness {
const sendSlack: OutboundSendMock = vi.fn();
primeChannelOutboundSendMock(
sendSlack,
{ messageId: "sl-1", channelId: "C12345", ts: "1234.5678" },
params.sendResults,
);
const ctx = {
cfg: {},
to: "C12345",
text: "",
payload: params.payload,
deps: {
sendSlack,
},
};
return {
run: async () => await slackOutbound.sendPayload!(ctx),
sendMock: sendSlack,
to: ctx.to,
};
}