26 lines
792 B
TypeScript
26 lines
792 B
TypeScript
import { expect, it } from "vitest";
|
|
import type { ImportJob } from "./import-job";
|
|
import { retryableJobItems } from "./import-job-retry";
|
|
|
|
const job = (state: ImportJob["state"]) =>
|
|
({
|
|
state,
|
|
items: ["done", "failed", "pending", "running"].map((state) => ({
|
|
state,
|
|
classname: state,
|
|
})),
|
|
}) as ImportJob;
|
|
it("only retries failures after a completed job", () =>
|
|
expect(retryableJobItems(job("completed")).map((i) => i.state)).toEqual([
|
|
"failed",
|
|
]));
|
|
it("recovers all unfinished items from an interrupted job", () =>
|
|
expect(retryableJobItems(job("interrupted")).map((i) => i.state)).toEqual([
|
|
"failed",
|
|
"pending",
|
|
"running",
|
|
]));
|
|
it.each(["queued", "running"] as const)("never duplicates a %s job", (state) =>
|
|
expect(retryableJobItems(job(state))).toEqual([]),
|
|
);
|