zod
Version:
TypeScript-first schema declaration and validation library with static type inference
73 lines (60 loc) • 2.62 kB
text/typescript
import { expect, test } from "vitest";
import { z } from "../../../../index.js";
import fr from "../../../locales/fr.js";
test("French locale - type name translations in too_small errors", () => {
z.config(fr());
const stringResult = z.string().min(5).safeParse("abc");
expect(stringResult.success).toBe(false);
if (!stringResult.success) {
expect(stringResult.error.issues[0].message).toBe("Trop petit : chaîne doit avoir >=5 caractères");
}
const numberResult = z.number().min(10).safeParse(5);
expect(numberResult.success).toBe(false);
if (!numberResult.success) {
expect(numberResult.error.issues[0].message).toBe("Trop petit : nombre doit être >=10");
}
const arrayResult = z.array(z.string()).min(3).safeParse(["a", "b"]);
expect(arrayResult.success).toBe(false);
if (!arrayResult.success) {
expect(arrayResult.error.issues[0].message).toBe("Trop petit : tableau doit avoir >=3 éléments");
}
const setResult = z
.set(z.string())
.min(2)
.safeParse(new Set(["a"]));
expect(setResult.success).toBe(false);
if (!setResult.success) {
expect(setResult.error.issues[0].message).toBe("Trop petit : ensemble doit avoir >=2 éléments");
}
});
test("French locale - type name translations in too_big errors", () => {
z.config(fr());
const stringResult = z.string().max(3).safeParse("abcde");
expect(stringResult.success).toBe(false);
if (!stringResult.success) {
expect(stringResult.error.issues[0].message).toBe("Trop grand : chaîne doit avoir <=3 caractères");
}
const numberResult = z.number().max(10).safeParse(15);
expect(numberResult.success).toBe(false);
if (!numberResult.success) {
expect(numberResult.error.issues[0].message).toBe("Trop grand : nombre doit être <=10");
}
const arrayResult = z.array(z.string()).max(2).safeParse(["a", "b", "c"]);
expect(arrayResult.success).toBe(false);
if (!arrayResult.success) {
expect(arrayResult.error.issues[0].message).toBe("Trop grand : tableau doit avoir <=2 éléments");
}
});
test("French locale - type name translations in invalid_type errors", () => {
z.config(fr());
const stringResult = z.string().safeParse(123);
expect(stringResult.success).toBe(false);
if (!stringResult.success) {
expect(stringResult.error.issues[0].message).toBe("Entrée invalide : chaîne attendu, nombre reçu");
}
const arrayResult = z.array(z.string()).safeParse({});
expect(arrayResult.success).toBe(false);
if (!arrayResult.success) {
expect(arrayResult.error.issues[0].message).toBe("Entrée invalide : tableau attendu, objet reçu");
}
});