61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
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();
|
|
});
|
|
});
|