diff --git a/src/telegram/bot-message.test.ts b/src/telegram/bot-message.test.ts index 4a745cbbe47..14f3ea37594 100644 --- a/src/telegram/bot-message.test.ts +++ b/src/telegram/bot-message.test.ts @@ -57,6 +57,21 @@ describe("telegram bot message processor", () => { ); } + function createDispatchFailureHarness( + context: Record, + sendMessage: ReturnType, + ) { + const runtimeError = vi.fn(); + buildTelegramMessageContext.mockResolvedValue(context); + dispatchTelegramMessage.mockRejectedValue(new Error("dispatch exploded")); + const processMessage = createTelegramMessageProcessor({ + ...baseDeps, + bot: { api: { sendMessage } }, + runtime: { error: runtimeError }, + } as unknown as Parameters[0]); + return { processMessage, runtimeError }; + } + it("dispatches when context is available", async () => { buildTelegramMessageContext.mockResolvedValue({ route: { sessionKey: "agent:main:main" } }); @@ -75,19 +90,14 @@ describe("telegram bot message processor", () => { it("sends user-visible fallback when dispatch throws", async () => { const sendMessage = vi.fn().mockResolvedValue(undefined); - const runtimeError = vi.fn(); - buildTelegramMessageContext.mockResolvedValue({ - chatId: 123, - threadSpec: { id: 456 }, - route: { sessionKey: "agent:main:main" }, - }); - dispatchTelegramMessage.mockRejectedValue(new Error("dispatch exploded")); - - const processMessage = createTelegramMessageProcessor({ - ...baseDeps, - bot: { api: { sendMessage } }, - runtime: { error: runtimeError }, - } as unknown as Parameters[0]); + const { processMessage, runtimeError } = createDispatchFailureHarness( + { + chatId: 123, + threadSpec: { id: 456 }, + route: { sessionKey: "agent:main:main" }, + }, + sendMessage, + ); await expect(processSampleMessage(processMessage)).resolves.toBeUndefined(); expect(sendMessage).toHaveBeenCalledWith( @@ -100,18 +110,13 @@ describe("telegram bot message processor", () => { it("swallows fallback delivery failures after dispatch throws", async () => { const sendMessage = vi.fn().mockRejectedValue(new Error("blocked by user")); - const runtimeError = vi.fn(); - buildTelegramMessageContext.mockResolvedValue({ - chatId: 123, - route: { sessionKey: "agent:main:main" }, - }); - dispatchTelegramMessage.mockRejectedValue(new Error("dispatch exploded")); - - const processMessage = createTelegramMessageProcessor({ - ...baseDeps, - bot: { api: { sendMessage } }, - runtime: { error: runtimeError }, - } as unknown as Parameters[0]); + const { processMessage, runtimeError } = createDispatchFailureHarness( + { + chatId: 123, + route: { sessionKey: "agent:main:main" }, + }, + sendMessage, + ); await expect(processSampleMessage(processMessage)).resolves.toBeUndefined(); expect(sendMessage).toHaveBeenCalledWith(