22 lines
1.9 KiB
TypeScript
22 lines
1.9 KiB
TypeScript
import {render,screen} from "@testing-library/react";
|
|
import userEvent from "@testing-library/user-event";
|
|
import {it,expect,vi,afterEach} from "vitest";
|
|
import {EditorWorkflowPanel} from "../src/components/tools/EditorWorkflowPanel.js";
|
|
const url="/api/sessions/ses_1/editor/job_1/workflow";
|
|
afterEach(()=>vi.unstubAllGlobals());
|
|
it("shows the actual registered preview with REVIEW labeling and no auto approval",async()=>{
|
|
vi.stubGlobal("fetch",()=>Promise.resolve({ok:true,json:()=>Promise.resolve({jobId:"job_1",selection:null,plan:null,preview:{url:"/api/sessions/ses_1/editor/job_1/plans/plan_1/preview",duration:10,reviewStatus:"REVIEW",sha256:"abc",machinePass:true}})}));
|
|
render(<EditorWorkflowPanel url={url}/>);
|
|
await userEvent.click(screen.getByRole("button",{name:"打开剪辑审核与预览"}));
|
|
expect(await screen.findByText(/10 秒/)).toBeVisible();
|
|
expect(screen.getByLabelText("REVIEW 视频预览")).toHaveAttribute("src","/api/sessions/ses_1/editor/job_1/plans/plan_1/preview");
|
|
expect(screen.getByRole("link",{name:"下载 REVIEW MP4"})).toHaveAttribute("href","/api/sessions/ses_1/editor/job_1/plans/plan_1/preview?download=1");
|
|
expect(screen.queryByText("最终审核 PASS")).not.toBeInTheDocument();
|
|
});
|
|
it("keeps human review boxes unchecked and rejects off-job media URLs",async()=>{
|
|
vi.stubGlobal("fetch",()=>Promise.resolve({ok:true,json:()=>Promise.resolve({jobId:"job_1",selection:{hash:"abc",reviewed:false,segments:[{id:"one",episodeNo:1,start:0,end:10,videoUrl:"https://external.example/secret",reason:"Test",subtitles:"Test"}]},plan:null,preview:null})}));
|
|
render(<EditorWorkflowPanel url={url}/>);await userEvent.click(screen.getByRole("button",{name:"打开剪辑审核与预览"}));
|
|
for(const checkbox of await screen.findAllByRole("checkbox"))expect(checkbox).not.toBeChecked();
|
|
expect(screen.queryByLabelText("选段 one 原声视频")).not.toBeInTheDocument();
|
|
});
|