Spaces:
Configuration error
Configuration error
| import { describe, expect, it } from "vitest"; | |
| import type { MoltbotConfig } from "../config/config.js"; | |
| import { buildSlackThreadingToolContext } from "./threading-tool-context.js"; | |
| const emptyCfg = {} as MoltbotConfig; | |
| describe("buildSlackThreadingToolContext", () => { | |
| it("uses top-level replyToMode by default", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { replyToMode: "first" }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "channel" }, | |
| }); | |
| expect(result.replyToMode).toBe("first"); | |
| }); | |
| it("uses chat-type replyToMode overrides for direct messages when configured", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { | |
| replyToMode: "off", | |
| replyToModeByChatType: { direct: "all" }, | |
| }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "direct" }, | |
| }); | |
| expect(result.replyToMode).toBe("all"); | |
| }); | |
| it("uses top-level replyToMode for channels when no channel override is set", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { | |
| replyToMode: "off", | |
| replyToModeByChatType: { direct: "all" }, | |
| }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "channel" }, | |
| }); | |
| expect(result.replyToMode).toBe("off"); | |
| }); | |
| it("falls back to top-level when no chat-type override is set", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { | |
| replyToMode: "first", | |
| }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "direct" }, | |
| }); | |
| expect(result.replyToMode).toBe("first"); | |
| }); | |
| it("uses legacy dm.replyToMode for direct messages when no chat-type override exists", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { | |
| replyToMode: "off", | |
| dm: { replyToMode: "all" }, | |
| }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "direct" }, | |
| }); | |
| expect(result.replyToMode).toBe("all"); | |
| }); | |
| it("uses all mode when ThreadLabel is present", () => { | |
| const cfg = { | |
| channels: { | |
| slack: { replyToMode: "off" }, | |
| }, | |
| } as MoltbotConfig; | |
| const result = buildSlackThreadingToolContext({ | |
| cfg, | |
| accountId: null, | |
| context: { ChatType: "channel", ThreadLabel: "some-thread" }, | |
| }); | |
| expect(result.replyToMode).toBe("all"); | |
| }); | |
| it("defaults to off when no replyToMode is configured", () => { | |
| const result = buildSlackThreadingToolContext({ | |
| cfg: emptyCfg, | |
| accountId: null, | |
| context: { ChatType: "direct" }, | |
| }); | |
| expect(result.replyToMode).toBe("off"); | |
| }); | |
| }); | |