| import { beforeEach, describe, expect, it, vi } from "vitest"; |
|
|
| const buildTelegramMessageContext = vi.hoisted(() => vi.fn()); |
| const dispatchTelegramMessage = vi.hoisted(() => vi.fn()); |
|
|
| vi.mock("./bot-message-context.js", () => ({ |
| buildTelegramMessageContext, |
| })); |
|
|
| vi.mock("./bot-message-dispatch.js", () => ({ |
| dispatchTelegramMessage, |
| })); |
|
|
| import { createTelegramMessageProcessor } from "./bot-message.js"; |
|
|
| describe("telegram bot message processor", () => { |
| beforeEach(() => { |
| buildTelegramMessageContext.mockReset(); |
| dispatchTelegramMessage.mockReset(); |
| }); |
|
|
| const baseDeps = { |
| bot: {}, |
| cfg: {}, |
| account: {}, |
| telegramCfg: {}, |
| historyLimit: 0, |
| groupHistories: {}, |
| dmPolicy: {}, |
| allowFrom: [], |
| groupAllowFrom: [], |
| ackReactionScope: "none", |
| logger: {}, |
| resolveGroupActivation: () => true, |
| resolveGroupRequireMention: () => false, |
| resolveTelegramGroupConfig: () => ({}), |
| runtime: {}, |
| replyToMode: "auto", |
| streamMode: "auto", |
| textLimit: 4096, |
| opts: {}, |
| resolveBotTopicsEnabled: () => false, |
| }; |
|
|
| it("dispatches when context is available", async () => { |
| buildTelegramMessageContext.mockResolvedValue({ route: { sessionKey: "agent:main:main" } }); |
|
|
| const processMessage = createTelegramMessageProcessor(baseDeps); |
| await processMessage({ message: { chat: { id: 123 }, message_id: 456 } }, [], [], {}); |
|
|
| expect(dispatchTelegramMessage).toHaveBeenCalledTimes(1); |
| }); |
|
|
| it("skips dispatch when no context is produced", async () => { |
| buildTelegramMessageContext.mockResolvedValue(null); |
| const processMessage = createTelegramMessageProcessor(baseDeps); |
| await processMessage({ message: { chat: { id: 123 }, message_id: 456 } }, [], [], {}); |
| expect(dispatchTelegramMessage).not.toHaveBeenCalled(); |
| }); |
| }); |
|
|