From ee80b4be69e122a787e736c5dc0748694e813f71 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 22:27:33 +0000 Subject: [PATCH] test: dedupe discord retry delivery setup --- src/discord/monitor/reply-delivery.test.ts | 48 ++++++++-------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/src/discord/monitor/reply-delivery.test.ts b/src/discord/monitor/reply-delivery.test.ts index 1e0bdc00942..6f6b7fcaaaf 100644 --- a/src/discord/monitor/reply-delivery.test.ts +++ b/src/discord/monitor/reply-delivery.test.ts @@ -27,6 +27,22 @@ describe("deliverDiscordReply", () => { const cfg = { channels: { discord: { token: "test-token" } }, } as OpenClawConfig; + const expectBotSendRetrySuccess = async (status: number, message: string) => { + sendMessageDiscordMock + .mockRejectedValueOnce(Object.assign(new Error(message), { status })) + .mockResolvedValueOnce({ messageId: "msg-1", channelId: "channel-1" }); + + await deliverDiscordReply({ + replies: [{ text: "retry me" }], + target: "channel:123", + token: "token", + runtime, + cfg, + textLimit: 2000, + }); + + expect(sendMessageDiscordMock).toHaveBeenCalledTimes(2); + }; const createBoundThreadBindings = async ( overrides: Partial<{ threadId: string; @@ -319,39 +335,11 @@ describe("deliverDiscordReply", () => { }); it("retries bot send on 429 rate limit then succeeds", async () => { - const rateLimitErr = Object.assign(new Error("rate limited"), { status: 429 }); - sendMessageDiscordMock - .mockRejectedValueOnce(rateLimitErr) - .mockResolvedValueOnce({ messageId: "msg-1", channelId: "channel-1" }); - - await deliverDiscordReply({ - replies: [{ text: "retry me" }], - target: "channel:123", - token: "token", - runtime, - cfg, - textLimit: 2000, - }); - - expect(sendMessageDiscordMock).toHaveBeenCalledTimes(2); + await expectBotSendRetrySuccess(429, "rate limited"); }); it("retries bot send on 500 server error then succeeds", async () => { - const serverErr = Object.assign(new Error("internal"), { status: 500 }); - sendMessageDiscordMock - .mockRejectedValueOnce(serverErr) - .mockResolvedValueOnce({ messageId: "msg-1", channelId: "channel-1" }); - - await deliverDiscordReply({ - replies: [{ text: "retry me" }], - target: "channel:123", - token: "token", - runtime, - cfg, - textLimit: 2000, - }); - - expect(sendMessageDiscordMock).toHaveBeenCalledTimes(2); + await expectBotSendRetrySuccess(500, "internal"); }); it("does not retry on 4xx client errors", async () => {