mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-30 03:37:06 +00:00
102 lines
2.9 KiB
TypeScript
102 lines
2.9 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const buildTelegramMessageContext = vi.hoisted(() => vi.fn());
|
|
const dispatchTelegramMessage = vi.hoisted(() => vi.fn());
|
|
const logMessageQueued = vi.hoisted(() => vi.fn());
|
|
const logMessageProcessed = vi.hoisted(() => vi.fn());
|
|
const logSessionStateChange = vi.hoisted(() => vi.fn());
|
|
const diagnosticLogger = vi.hoisted(() => ({
|
|
info: vi.fn(),
|
|
debug: vi.fn(),
|
|
error: vi.fn(),
|
|
}));
|
|
|
|
vi.mock("./bot-message-context.js", () => ({
|
|
buildTelegramMessageContext,
|
|
}));
|
|
|
|
vi.mock("./bot-message-dispatch.js", () => ({
|
|
dispatchTelegramMessage,
|
|
}));
|
|
|
|
vi.mock("../logging/diagnostic.js", () => ({
|
|
diagnosticLogger,
|
|
logMessageQueued,
|
|
logMessageProcessed,
|
|
logSessionStateChange,
|
|
}));
|
|
|
|
import { createTelegramMessageProcessor } from "./bot-message.js";
|
|
|
|
describe("telegram bot message diagnostics", () => {
|
|
beforeEach(() => {
|
|
buildTelegramMessageContext.mockReset();
|
|
dispatchTelegramMessage.mockReset();
|
|
logMessageQueued.mockReset();
|
|
logMessageProcessed.mockReset();
|
|
logSessionStateChange.mockReset();
|
|
diagnosticLogger.info.mockReset();
|
|
diagnosticLogger.debug.mockReset();
|
|
diagnosticLogger.error.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("decrements queue depth after successful processing", async () => {
|
|
buildTelegramMessageContext.mockResolvedValue({
|
|
route: { sessionKey: "agent:main:main" },
|
|
});
|
|
|
|
const processMessage = createTelegramMessageProcessor(baseDeps);
|
|
await processMessage({ message: { chat: { id: 123 }, message_id: 456 } }, [], [], {});
|
|
|
|
expect(logMessageQueued).toHaveBeenCalledTimes(1);
|
|
expect(logSessionStateChange).toHaveBeenCalledWith({
|
|
sessionKey: "agent:main:main",
|
|
state: "idle",
|
|
reason: "message_completed",
|
|
});
|
|
});
|
|
|
|
it("decrements queue depth after processing error", async () => {
|
|
buildTelegramMessageContext.mockResolvedValue({
|
|
route: { sessionKey: "agent:main:main" },
|
|
});
|
|
dispatchTelegramMessage.mockRejectedValue(new Error("boom"));
|
|
|
|
const processMessage = createTelegramMessageProcessor(baseDeps);
|
|
|
|
await expect(
|
|
processMessage({ message: { chat: { id: 123 }, message_id: 456 } }, [], [], {}),
|
|
).rejects.toThrow("boom");
|
|
|
|
expect(logMessageQueued).toHaveBeenCalledTimes(1);
|
|
expect(logSessionStateChange).toHaveBeenCalledWith({
|
|
sessionKey: "agent:main:main",
|
|
state: "idle",
|
|
reason: "message_error",
|
|
});
|
|
});
|
|
});
|