From cdb2608ed41b256b6f893d1a9891fc795711afa6 Mon Sep 17 00:00:00 2001 From: Yoshihiro Takahara Date: Wed, 28 Jan 2026 01:12:18 +0000 Subject: [PATCH] slack: add regression test for read threadId forwarding Covers actions.handleAction(read) -> handleSlackAction(readMessages) including threadId. --- .../slack/src/channel.read-threadid.test.ts | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 extensions/slack/src/channel.read-threadid.test.ts diff --git a/extensions/slack/src/channel.read-threadid.test.ts b/extensions/slack/src/channel.read-threadid.test.ts new file mode 100644 index 000000000..4ccc965e0 --- /dev/null +++ b/extensions/slack/src/channel.read-threadid.test.ts @@ -0,0 +1,48 @@ +import { describe, expect, it, vi } from "vitest"; + +import { slackPlugin } from "./channel.js"; +import { setSlackRuntime } from "./runtime.js"; + +import type { MoltbotConfig } from "../../../src/config/config.js"; +import { createPluginRuntime } from "../../../src/plugins/runtime/index.js"; + +describe("slack plugin read action", () => { + it("forwards threadId to readMessages", async () => { + const runtime = createPluginRuntime(); + + const handleSlackAction = vi.fn(async () => ({ ok: true })); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (runtime.channel.slack as any).handleSlackAction = handleSlackAction; + + setSlackRuntime(runtime); + + const cfg = { + channels: { + slack: { + botToken: "xoxb-test", + appToken: "xapp-test", + }, + }, + } as MoltbotConfig; + + await slackPlugin.actions.handleAction({ + action: "read", + params: { + channelId: "C123", + threadId: "1712345678.000100", + limit: 3, + }, + cfg, + accountId: undefined, + toolContext: undefined, + }); + + expect(handleSlackAction).toHaveBeenCalledTimes(1); + expect(handleSlackAction.mock.calls[0]?.[0]).toMatchObject({ + action: "readMessages", + channelId: "C123", + limit: 3, + threadId: "1712345678.000100", + }); + }); +});