Files
cfw-autumn/server/tests/unit/rollouts/fullSubjectRolloutUtils.test.ts
2026-04-22 12:04:27 +01:00

47 lines
1.3 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { isRetryableFullSubjectRolloutError } from "@/internal/misc/rollouts/fullSubjectRolloutUtils.js";
describe("fullSubjectRolloutUtils", () => {
test("treats retryable DB errors as retryable rollout errors", () => {
expect(
isRetryableFullSubjectRolloutError({
error: Object.assign(new Error("statement timeout"), { code: "57014" }),
}),
).toBe(true);
});
test("treats DB connect timeouts without a code as retryable rollout errors", () => {
expect(
isRetryableFullSubjectRolloutError({
error: new Error("timeout exceeded when trying to connect"),
}),
).toBe(true);
});
test("treats ioredis max retries as a retryable rollout error", () => {
expect(
isRetryableFullSubjectRolloutError({
error: Object.assign(new Error("redis retries exhausted"), {
name: "MaxRetriesPerRequestError",
}),
}),
).toBe(true);
});
test("treats ioredis command timeouts as retryable rollout errors", () => {
expect(
isRetryableFullSubjectRolloutError({
error: new Error("Command timed out"),
}),
).toBe(true);
});
test("does not treat application errors as retryable rollout errors", () => {
expect(
isRetryableFullSubjectRolloutError({
error: Object.assign(new Error("invalid request"), { code: "400" }),
}),
).toBe(false);
});
});