zod
Version:
TypeScript-first schema declaration and validation library with static type inference
124 lines (123 loc) • 4.85 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const ru_js_1 = __importDefault(require("../../../locales/ru.js"));
(0, vitest_1.describe)("Russian localization", () => {
const { localeError } = (0, ru_js_1.default)();
(0, vitest_1.describe)("pluralization rules", () => {
for (const { type, cases } of TEST_CASES) {
(0, vitest_1.describe)(`${type} pluralization`, () => {
for (const { count, expected } of cases) {
(0, vitest_1.it)(`correctly pluralizes ${count} ${type}`, () => {
const error = localeError({
code: "too_small",
minimum: count,
type: "number",
inclusive: true,
path: [],
origin: type,
input: count - 1,
});
(0, vitest_1.expect)(error).toContain(expected);
});
}
});
}
(0, vitest_1.it)("handles negative numbers correctly", () => {
const error = localeError({
code: "too_small",
minimum: -2,
type: "number",
inclusive: true,
path: [],
origin: "array",
input: -3,
});
(0, vitest_1.expect)(error).toContain("-2 элемента");
});
(0, vitest_1.it)("handles zero correctly", () => {
const error = localeError({
code: "too_small",
minimum: 0,
type: "number",
inclusive: true,
path: [],
origin: "array",
input: -1,
});
(0, vitest_1.expect)(error).toContain("0 элементов");
});
(0, vitest_1.it)("handles bigint values correctly", () => {
const error = localeError({
code: "too_small",
minimum: BigInt(21),
type: "number",
inclusive: true,
path: [],
origin: "array",
input: BigInt(20),
});
(0, vitest_1.expect)(error).toContain("21 элемент");
});
});
});
const TEST_CASES = [
{
type: "array",
cases: [
{ count: 1, expected: "1 элемент" },
{ count: 2, expected: "2 элемента" },
{ count: 5, expected: "5 элементов" },
{ count: 11, expected: "11 элементов" },
{ count: 21, expected: "21 элемент" },
{ count: 22, expected: "22 элемента" },
{ count: 25, expected: "25 элементов" },
{ count: 101, expected: "101 элемент" },
{ count: 111, expected: "111 элементов" },
],
},
{
type: "set",
cases: [
{ count: 1, expected: "1 элемент" },
{ count: 2, expected: "2 элемента" },
{ count: 5, expected: "5 элементов" },
{ count: 11, expected: "11 элементов" },
{ count: 21, expected: "21 элемент" },
{ count: 22, expected: "22 элемента" },
{ count: 25, expected: "25 элементов" },
{ count: 101, expected: "101 элемент" },
{ count: 111, expected: "111 элементов" },
],
},
{
type: "string",
cases: [
{ count: 1, expected: "1 символ" },
{ count: 2, expected: "2 символа" },
{ count: 5, expected: "5 символов" },
{ count: 11, expected: "11 символов" },
{ count: 21, expected: "21 символ" },
{ count: 22, expected: "22 символа" },
{ count: 25, expected: "25 символов" },
],
},
{
type: "file",
cases: [
{ count: 0, expected: "0 байт" },
{ count: 1, expected: "1 байт" },
{ count: 2, expected: "2 байта" },
{ count: 5, expected: "5 байт" },
{ count: 11, expected: "11 байт" },
{ count: 21, expected: "21 байт" },
{ count: 22, expected: "22 байта" },
{ count: 25, expected: "25 байт" },
{ count: 101, expected: "101 байт" },
{ count: 110, expected: "110 байт" },
],
},
];