You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
901 B
26 lines
901 B
import { describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("@/workers/rpa/worker-state", () => ({
|
|
listWorkerHeartbeats: vi.fn(),
|
|
}));
|
|
|
|
import { isAnyRpaWorkerHealthy } from "@/lib/rpa/worker-health";
|
|
import { listWorkerHeartbeats } from "@/workers/rpa/worker-state";
|
|
|
|
describe("isAnyRpaWorkerHealthy", () => {
|
|
it("存在近期心跳时返回 true", async () => {
|
|
vi.mocked(listWorkerHeartbeats).mockResolvedValue([
|
|
{ workerId: "w1", lastSeenMs: Date.now() - 5_000 },
|
|
]);
|
|
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(true);
|
|
});
|
|
|
|
it("无心跳或 Redis 异常时返回 false", async () => {
|
|
vi.mocked(listWorkerHeartbeats).mockResolvedValue([]);
|
|
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(false);
|
|
|
|
vi.mocked(listWorkerHeartbeats).mockRejectedValue(new Error("redis down"));
|
|
await expect(isAnyRpaWorkerHealthy()).resolves.toBe(false);
|
|
});
|
|
});
|