feat: 搭建阶段 0 与阶段 1 基础工程
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
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
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user