41 lines
1.0 KiB
TypeScript
41 lines
1.0 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
import { checkReadiness } from "./readiness";
|
|
|
|
describe("readiness checks", () => {
|
|
it("reports ready only when every dependency succeeds", async () => {
|
|
await expect(
|
|
checkReadiness({ database: async () => true, redis: async () => "PONG" }),
|
|
).resolves.toEqual({
|
|
status: "ready",
|
|
checks: { database: "ok", redis: "ok" },
|
|
});
|
|
|
|
await expect(
|
|
checkReadiness({
|
|
database: async () => true,
|
|
redis: async () => {
|
|
throw new Error("offline");
|
|
},
|
|
}),
|
|
).resolves.toEqual({
|
|
status: "not-ready",
|
|
checks: { database: "ok", redis: "failed" },
|
|
});
|
|
});
|
|
|
|
it("bounds a stalled dependency", async () => {
|
|
vi.useFakeTimers();
|
|
const result = checkReadiness(
|
|
{ database: () => new Promise(() => undefined) },
|
|
100,
|
|
);
|
|
vi.advanceTimersByTime(100);
|
|
await expect(result).resolves.toEqual({
|
|
status: "not-ready",
|
|
checks: { database: "failed" },
|
|
});
|
|
vi.useRealTimers();
|
|
});
|
|
});
|