test: dedupe discord retry delivery setup

This commit is contained in:
Peter Steinberger 2026-03-13 22:27:33 +00:00
parent 3eb039c554
commit ee80b4be69
1 changed files with 18 additions and 30 deletions

View File

@ -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 () => {