feat(cms): improve catalog, editorial recovery and operations
This commit is contained in:
1 parent
2fead134e6
commit
c389c3893d
122 files changed
+8137
-703
No files matched your search
@@ -5,7 +5,14 @@ import { retryableJobItems } from "./import-job-retry";
|
||||
const job = (state: ImportJob["state"]) =>
|
||||
({
|
||||
state,
|
||||
items: ["done", "failed", "pending", "running"].map((state) => ({
|
||||
items: [
|
||||
"done",
|
||||
"failed",
|
||||
"pending",
|
||||
"running",
|
||||
"cancelled",
|
||||
"interrupted",
|
||||
].map((state) => ({
|
||||
state,
|
||||
classname: state,
|
||||
})),
|
||||
@@ -14,12 +21,33 @@ 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", () =>
|
||||
it("recovers only safe unfinished items from an interrupted job", () =>
|
||||
expect(retryableJobItems(job("interrupted")).map((i) => i.state)).toEqual([
|
||||
"failed",
|
||||
"pending",
|
||||
"running",
|
||||
"cancelled",
|
||||
]));
|
||||
it.each(["queued", "running"] as const)("never duplicates a %s job", (state) =>
|
||||
expect(retryableJobItems(job(state))).toEqual([]),
|
||||
);
|
||||
|
||||
it("retries cancelled remaining work without redoing completed or uncertain items", () => {
|
||||
expect(retryableJobItems(job("cancelled")).map((i) => i.state)).toEqual([
|
||||
"failed",
|
||||
"pending",
|
||||
"cancelled",
|
||||
]);
|
||||
});
|
||||
|
||||
it("does not blindly retry legacy interrupted mutations stored as failures", () => {
|
||||
const interrupted = job("interrupted");
|
||||
interrupted.items = [
|
||||
{
|
||||
...interrupted.items[0],
|
||||
state: "failed",
|
||||
error:
|
||||
"Server restarted during import. Review local data and retry to complete missing parts.",
|
||||
},
|
||||
];
|
||||
expect(retryableJobItems(interrupted)).toEqual([]);
|
||||
});
|
||||
Reference in new issue
Block a user