60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { adaptPendingReviews, adaptReviewSubmission } from "@/lib/adapters/reviews";
|
|
import type {
|
|
PendingReviewResponseDto,
|
|
SubmitReviewResponseDto,
|
|
} from "@/lib/types/backend";
|
|
|
|
const PENDING_REVIEW_BASE: PendingReviewResponseDto = {
|
|
review_task_id: 301,
|
|
order_id: 101,
|
|
workflow_id: "wf-101",
|
|
current_step: "review",
|
|
review_task_status: "pending",
|
|
latest_revision_asset_id: null,
|
|
current_revision_asset_id: null,
|
|
latest_revision_version: null,
|
|
revision_count: 0,
|
|
pending_manual_confirm: false,
|
|
created_at: "2026-03-27T00:00:00Z",
|
|
};
|
|
|
|
const REVIEW_SUBMISSION_BASE: SubmitReviewResponseDto = {
|
|
order_id: 101,
|
|
workflow_id: "wf-101",
|
|
decision: "rerun_scene",
|
|
status: "queued",
|
|
};
|
|
|
|
test("returns a business-empty queue state when no reviews are pending", () => {
|
|
const viewModel = adaptPendingReviews([]);
|
|
|
|
expect(viewModel.items).toEqual([]);
|
|
expect(viewModel.state.kind).toBe("business-empty");
|
|
});
|
|
|
|
test("maps pending reviews to waiting-review queue items", () => {
|
|
const viewModel = adaptPendingReviews([PENDING_REVIEW_BASE]);
|
|
|
|
expect(viewModel.state.kind).toBe("ready");
|
|
expect(viewModel.items[0]).toMatchObject({
|
|
orderId: 101,
|
|
reviewTaskId: 301,
|
|
status: "waiting_review",
|
|
});
|
|
});
|
|
|
|
test("maps review submission decision metadata", () => {
|
|
const viewModel = adaptReviewSubmission(REVIEW_SUBMISSION_BASE);
|
|
|
|
expect(viewModel).toMatchObject({
|
|
orderId: 101,
|
|
workflowId: "wf-101",
|
|
decision: "rerun_scene",
|
|
status: "queued",
|
|
decisionMeta: {
|
|
label: "重跑场景",
|
|
tone: "warning",
|
|
},
|
|
});
|
|
});
|