tighten validation, add tests

This commit is contained in:
Alex Holliday committed 2026-05-12 11:18:51 -07:00
1 parent 780189e4a1
commit b925434078
2 files changed
+21 -1

No files matched your search

@@ -72,7 +72,7 @@ export const editMaintenanceByIdWindowBodyValidation = z
start: dateToString.optional(),
end: dateToString.optional(),
expiry: dateToString.optional(),
monitors: z.array(z.string()).optional(),
monitors: z.array(z.string()).min(1, "At least one monitor is required").optional(),
duration: z.number().optional(),
durationUnit: z.enum(DurationUnits).optional(),
})
@@ -168,4 +168,24 @@ describe("editMaintenanceByIdWindowBodyValidation", () => {
});
expect(result.success).toBe(true);
});
it("accepts a body without a monitors field (monitors is optional on edit)", () => {
const result = editMaintenanceByIdWindowBodyValidation.safeParse({ name: "Updated Name" });
expect(result.success).toBe(true);
});
it("accepts a body with one or more monitors", () => {
const result = editMaintenanceByIdWindowBodyValidation.safeParse({ monitors: ["mon-1"] });
expect(result.success).toBe(true);
});
it("rejects an empty monitors array", () => {
const result = editMaintenanceByIdWindowBodyValidation.safeParse({ monitors: [] });
expect(result.success).toBe(false);
if (!result.success) {
expect(result.error.issues).toEqual(
expect.arrayContaining([expect.objectContaining({ message: "At least one monitor is required", path: ["monitors"] })])
);
}
});
});