Files
agent/apps/web/tests/editor-workflow.test.tsx

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();
});