Files
agent/packages/harness/tests/editor-service.test.ts
T

19 lines
1.4 KiB
TypeScript

import {describe,it,expect} from "vitest";
import {EditorService} from "../src/media/editor-service.js";
import {CmsConnection} from "../src/cms/cms-connection.js";
describe("editor job boundary",()=>{
it("requires CMS login before preparing media and rejects unknown jobs",async()=>{
const service=new EditorService({cms:new CmsConnection({publishableKey:""}),runtimeRoot:"/unused/editor-tests",sessionId:"ses_test"});
await expect(service.prepare({dramaId:"06aa396d-175a-48ed-ad76-02786ef4d0a9",episodeNumbers:[1,3,5]},new AbortController().signal)).rejects.toMatchObject({code:"CMS_LOGIN_REQUIRED"});
expect(()=>service.status("job_unknown")).toThrow();
await expect(service.submitAnalysis("job_unknown",{},new AbortController().signal)).rejects.toMatchObject({code:"EDITOR_JOB_NOT_FOUND"});
expect(()=>service.workflowView("job_unknown")).toThrow();
await expect(service.review("job_unknown","selection",{})).rejects.toMatchObject({code:"EDITOR_JOB_NOT_FOUND"});
});
it("rejects duplicate episode requests and oversized preparation scope before fetching",async()=>{
const service=new EditorService({cms:new CmsConnection({publishableKey:""}),runtimeRoot:"/unused/editor-tests",sessionId:"ses_test"});
for(const numbers of [[1,1],[1,2,3,4,5,6],[]])await expect(service.prepare({dramaId:"06aa396d-175a-48ed-ad76-02786ef4d0a9",episodeNumbers:numbers},new AbortController().signal)).rejects.toThrow();
});
});