Files
klz-cables.com/.pnpm-store/v10/files/7b/dac1ddc8a6ff2dc71240b1965112d6acfc8418ba1ebd0a5698b19c774406ac95142f078fc0272ecf3ebf3fd001c223a63e1088487fe9cccdbea1bb6844d1fa
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

169 lines
3.5 KiB
Plaintext

import { expect, test } from "vitest";
import * as z from "zod/v4";
test("nested refinements", () => {
const zodSchema = z
.object({
password: z.string().min(1),
nested: z
.object({
confirm: z
.string()
.min(1)
.refine((value) => value.length > 2, {
message: "Confirm length should be > 2",
}),
})
.refine(
(data) => {
return data.confirm === "bar";
},
{
path: ["confirm"],
error: 'Value must be "bar"',
}
),
})
.refine(
(data) => {
return data.nested.confirm === data.password;
},
{
path: ["nested", "confirm"],
error: "Password and confirm must match",
}
);
const DATA = {
password: "bar",
nested: { confirm: "" },
};
expect(zodSchema.safeParse(DATA)).toMatchInlineSnapshot(`
{
"error": [ZodError: [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"nested",
"confirm"
],
"message": "Too small: expected string to have >=1 characters"
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Confirm length should be > 2"
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Value must be \\"bar\\""
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Password and confirm must match"
}
]],
"success": false,
}
`);
expect(zodSchema.safeParse(DATA, { jitless: true })).toMatchInlineSnapshot(`
{
"error": [ZodError: [
{
"origin": "string",
"code": "too_small",
"minimum": 1,
"inclusive": true,
"path": [
"nested",
"confirm"
],
"message": "Too small: expected string to have >=1 characters"
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Confirm length should be > 2"
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Value must be \\"bar\\""
},
{
"code": "custom",
"path": [
"nested",
"confirm"
],
"message": "Password and confirm must match"
}
]],
"success": false,
}
`);
expect(zodSchema["~standard"].validate(DATA)).toMatchInlineSnapshot(`
{
"issues": [
{
"code": "too_small",
"inclusive": true,
"message": "Too small: expected string to have >=1 characters",
"minimum": 1,
"origin": "string",
"path": [
"nested",
"confirm",
],
},
{
"code": "custom",
"message": "Confirm length should be > 2",
"path": [
"nested",
"confirm",
],
},
{
"code": "custom",
"message": "Value must be "bar"",
"path": [
"nested",
"confirm",
],
},
{
"code": "custom",
"message": "Password and confirm must match",
"path": [
"nested",
"confirm",
],
},
],
}
`);
});