From 8b76bcba90fa981a858e3fcebb3fcdf9249abf9c Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Fri, 17 Apr 2026 15:44:26 -0400 Subject: [PATCH] test: avoid real Telegram config writes in retry tests --- .../src/bot.create-telegram-bot.test.ts | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/extensions/telegram/src/bot.create-telegram-bot.test.ts b/extensions/telegram/src/bot.create-telegram-bot.test.ts index b36a5f89aeb..c420682c211 100644 --- a/extensions/telegram/src/bot.create-telegram-bot.test.ts +++ b/extensions/telegram/src/bot.create-telegram-bot.test.ts @@ -119,6 +119,10 @@ function installPerKeySequentializer(): void { }); } +function mockTelegramConfigWrites() { + return vi.spyOn(configRuntime, "writeConfigFile").mockResolvedValue(undefined); +} + describe("createTelegramBot", () => { beforeAll(() => { process.env.TZ = "UTC"; @@ -1465,6 +1469,7 @@ describe("createTelegramBot", () => { }); it("retries group migration updates after a bubbled handler failure", async () => { + const writeConfigFileSpy = mockTelegramConfigWrites(); loadConfig.mockReturnValue({ channels: { telegram: { @@ -1514,12 +1519,17 @@ describe("createTelegramBot", () => { loadConfig.mockImplementationOnce(() => { throw new Error("cfg boom"); }); - await expect(runMiddlewareChain(ctx)).rejects.toThrow("cfg boom"); - const loadConfigCallsAfterFailure = loadConfig.mock.calls.length; - await runMiddlewareChain(ctx); + try { + await expect(runMiddlewareChain(ctx)).rejects.toThrow("cfg boom"); + const loadConfigCallsAfterFailure = loadConfig.mock.calls.length; + await runMiddlewareChain(ctx); - expect(loadConfigCallsAfterFailure).toBe(loadConfigCallsBeforeRetry + 1); - expect(loadConfig.mock.calls.length).toBeGreaterThan(loadConfigCallsAfterFailure); + expect(loadConfigCallsAfterFailure).toBe(loadConfigCallsBeforeRetry + 1); + expect(loadConfig.mock.calls.length).toBeGreaterThan(loadConfigCallsAfterFailure); + expect(writeConfigFileSpy).toHaveBeenCalledTimes(1); + } finally { + writeConfigFileSpy.mockRestore(); + } }); const groupPolicyCases: Array<{ @@ -3110,6 +3120,7 @@ describe("createTelegramBot", () => { }); it("retries group migration updates after a bubbled handler failure", async () => { + const writeConfigFileSpy = mockTelegramConfigWrites(); loadConfig.mockReturnValue({ channels: { telegram: { @@ -3159,12 +3170,17 @@ describe("createTelegramBot", () => { loadConfig.mockImplementationOnce(() => { throw new Error("cfg boom"); }); - await expect(runMiddlewareChain(ctx)).rejects.toThrow("cfg boom"); - const loadConfigCallsAfterFailure = loadConfig.mock.calls.length; - await runMiddlewareChain(ctx); + try { + await expect(runMiddlewareChain(ctx)).rejects.toThrow("cfg boom"); + const loadConfigCallsAfterFailure = loadConfig.mock.calls.length; + await runMiddlewareChain(ctx); - expect(loadConfigCallsAfterFailure).toBe(loadConfigCallsBeforeRetry + 1); - expect(loadConfig.mock.calls.length).toBeGreaterThan(loadConfigCallsAfterFailure); + expect(loadConfigCallsAfterFailure).toBe(loadConfigCallsBeforeRetry + 1); + expect(loadConfig.mock.calls.length).toBeGreaterThan(loadConfigCallsAfterFailure); + expect(writeConfigFileSpy).toHaveBeenCalledTimes(1); + } finally { + writeConfigFileSpy.mockRestore(); + } }); it("retries reaction updates after a bubbled enqueue failure", async () => {