tighten validation, add tests
This commit is contained in:
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"] })])
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user