76 lines
2.3 KiB
TypeScript
76 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
deriveTaskStatusFromConfirmedPlatforms,
|
|
mapPlatformStatusToExecutionStatus,
|
|
type PlatformRunRecord
|
|
} from "../src/index";
|
|
|
|
function createRun(
|
|
status: PlatformRunRecord["status"],
|
|
selected = true
|
|
): PlatformRunRecord {
|
|
return {
|
|
platform: "tmall",
|
|
searchRequirement: "recommended",
|
|
status,
|
|
candidateCount: 1,
|
|
selectedCandidateIds: selected ? ["candidate-1"] : [],
|
|
lastUpdatedAt: new Date().toISOString()
|
|
};
|
|
}
|
|
|
|
describe("deriveTaskStatusFromConfirmedPlatforms", () => {
|
|
it("returns NoSelection when no platform has confirmed links", () => {
|
|
expect(
|
|
deriveTaskStatusFromConfirmedPlatforms([createRun("Skipped", false)])
|
|
).toBe("NoSelection");
|
|
});
|
|
|
|
it("returns Completed when all confirmed platforms are completed", () => {
|
|
expect(
|
|
deriveTaskStatusFromConfirmedPlatforms([
|
|
createRun("Completed"),
|
|
createRun("Completed")
|
|
])
|
|
).toBe("Completed");
|
|
});
|
|
|
|
it("returns PartialCompleted when at least one confirmed platform is completed and another is blocked", () => {
|
|
expect(
|
|
deriveTaskStatusFromConfirmedPlatforms([
|
|
createRun("Completed"),
|
|
createRun("Blocked")
|
|
])
|
|
).toBe("PartialCompleted");
|
|
});
|
|
|
|
it("returns Blocked when all confirmed platforms are blocked", () => {
|
|
expect(
|
|
deriveTaskStatusFromConfirmedPlatforms([createRun("SearchBlocked")])
|
|
).toBe("Blocked");
|
|
});
|
|
|
|
it("returns Failed when all confirmed platforms fail", () => {
|
|
expect(
|
|
deriveTaskStatusFromConfirmedPlatforms([createRun("Failed")])
|
|
).toBe("Failed");
|
|
});
|
|
});
|
|
|
|
describe("mapPlatformStatusToExecutionStatus", () => {
|
|
it("maps publishable platform statuses", () => {
|
|
expect(mapPlatformStatusToExecutionStatus("Completed")).toBe("completed");
|
|
expect(mapPlatformStatusToExecutionStatus("SearchBlocked")).toBe("blocked");
|
|
expect(mapPlatformStatusToExecutionStatus("Failed")).toBe("failed");
|
|
expect(mapPlatformStatusToExecutionStatus("Skipped")).toBe("skipped");
|
|
expect(mapPlatformStatusToExecutionStatus("NoResult")).toBe("no_result");
|
|
});
|
|
|
|
it("rejects running states", () => {
|
|
expect(() => mapPlatformStatusToExecutionStatus("Running")).toThrow(
|
|
/cannot be published/i
|
|
);
|
|
});
|
|
});
|