import { describe, expect, it } from "vitest"; import { caseListFiltersSchema, caseMetadataPatchSchema, caseTypeSchema, resultVersionStatusSchema, } from "../validation"; describe("case validation", () => { it("accepts the supported case types and result-version statuses", () => { expect(caseTypeSchema.parse("article")).toBe("article"); expect(caseTypeSchema.parse("human_copy")).toBe("human_copy"); expect(resultVersionStatusSchema.parse("optimized")).toBe("optimized"); expect(resultVersionStatusSchema.parse("failed")).toBe("failed"); }); it("keeps optional ownership metadata empty and editable", () => { expect(caseMetadataPatchSchema.parse({})).toEqual({}); expect( caseMetadataPatchSchema.parse({ customer_name: "伟思德鲁", brand_name: "IPMS", project_tags: ["推荐榜单", "2026"], notes: "客户偏好保留专业语气。", }), ).toEqual({ customer_name: "伟思德鲁", brand_name: "IPMS", project_tags: ["推荐榜单", "2026"], notes: "客户偏好保留专业语气。", }); }); it("parses default list filters without archived cases", () => { expect(caseListFiltersSchema.parse({})).toEqual({ include_archived: false, }); expect( caseListFiltersSchema.parse({ case_type: "human_copy", status: "optimized", project_tag: "朋友圈", q: "自然表达", include_archived: "true", }), ).toMatchObject({ case_type: "human_copy", status: "optimized", project_tag: "朋友圈", q: "自然表达", include_archived: true, }); }); });