feat: 搭建阶段 0 与阶段 1 基础工程

This commit is contained in:
2026-04-02 16:28:44 +08:00
parent 02ec7c3a03
commit a5b079a673
37 changed files with 7379 additions and 0 deletions
@@ -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
);
});
});