33 lines
1.4 KiB
Plaintext
33 lines
1.4 KiB
Plaintext
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');
|
|
});
|