Files
agent-park/src/lib/validations.tag-maintenance.test.ts
T

67 lines
1.7 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { TagMaintenanceRequestSchema } from "./validations";
describe("TagMaintenanceRequestSchema", () => {
const apiKey = "k".repeat(32);
it("accepts empty updates and merges", () => {
const result = TagMaintenanceRequestSchema.safeParse({
apiKey,
updates: [],
merges: [],
});
expect(result.success).toBe(true);
});
it("rejects duplicate update tag IDs", () => {
const result = TagMaintenanceRequestSchema.safeParse({
apiKey,
updates: [
{ tagId: "tag-1", nameEn: "Tag 1" },
{ tagId: "tag-1", nameEn: "Tag One" },
],
merges: [],
});
expect(result.success).toBe(false);
expect(result.error?.errors[0]?.message).toContain("Duplicate update tag ID");
});
it("rejects self merge", () => {
const result = TagMaintenanceRequestSchema.safeParse({
apiKey,
updates: [],
merges: [
{
target: { id: "tag-1" },
sourceTagIds: ["tag-1", "tag-2"],
},
],
});
expect(result.success).toBe(false);
expect(result.error?.errors[0]?.message).toContain("Self merge is not allowed");
});
it("rejects one source tag used in multiple merges", () => {
const result = TagMaintenanceRequestSchema.safeParse({
apiKey,
updates: [],
merges: [
{
target: { id: "target-1" },
sourceTagIds: ["source-1"],
},
{
target: { id: "target-2" },
sourceTagIds: ["source-1"],
},
],
});
expect(result.success).toBe(false);
expect(result.error?.errors[0]?.message).toContain("Source tag ID appears in multiple merges");
});
});