zod
Version:
TypeScript-first schema declaration and validation library with static type inference
33 lines (28 loc) • 1.42 kB
text/typescript
import { beforeEach, expect, test } from "vitest";
import * as z from "zod/v4";
// English is the default locale and must register on first ZodType construction even when bundlers tree-shake `sideEffects: false` modules (#5953, #5725). Reset between tests so each one observes the lazy init.
beforeEach(() => {
z.config({ localeError: undefined });
});
test("first ZodType construction registers the English default locale", () => {
expect(z.config().localeError).toBeUndefined();
const schema = z.enum(["km", "mi"]);
expect(z.config().localeError).toBeDefined();
const result = schema.safeParse("feet");
expect(result.success).toBe(false);
expect(result.error!.issues[0].message).toBe('Invalid option: expected one of "km"|"mi"');
});
test("explicit locale set before schema construction is preserved", () => {
z.config(z.locales.fr());
const schema = z.enum(["km", "mi"]);
const result = schema.safeParse("feet");
expect(result.success).toBe(false);
expect(result.error!.issues[0].message).toBe('Option invalide : une valeur parmi "km"|"mi" attendue');
});
test("explicit locale set after schema construction overrides default", () => {
const schema = z.enum(["km", "mi"]);
z.config(z.locales.fr());
const result = schema.safeParse("feet");
expect(result.success).toBe(false);
expect(result.error!.issues[0].message).toBe('Option invalide : une valeur parmi "km"|"mi" attendue');
});