Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
70 lines
3.3 KiB
Plaintext
70 lines
3.3 KiB
Plaintext
import { expect, test } from "vitest";
|
|
import * as z from "zod/v4";
|
|
import { parsedType } from "../../util.js";
|
|
|
|
test("parsedType", () => {
|
|
expect(parsedType("string")).toBe("string");
|
|
expect(parsedType(1)).toBe("number");
|
|
expect(parsedType(true)).toBe("boolean");
|
|
expect(parsedType(null)).toBe("null");
|
|
expect(parsedType(undefined)).toBe("undefined");
|
|
expect(parsedType([])).toBe("array");
|
|
expect(parsedType({})).toBe("object");
|
|
expect(parsedType(new Date())).toBe("Date");
|
|
expect(parsedType(new Map())).toBe("Map");
|
|
expect(parsedType(new Set())).toBe("Set");
|
|
expect(parsedType(new Error())).toBe("Error");
|
|
|
|
const nullPrototype = Object.create(null);
|
|
expect(parsedType(nullPrototype)).toBe("object");
|
|
|
|
const doubleNullPrototype = Object.create(Object.create(null));
|
|
expect(parsedType(doubleNullPrototype)).toBe("object");
|
|
|
|
expect(parsedType(Number.NaN)).toBe("nan");
|
|
});
|
|
|
|
test("locales - tk", () => {
|
|
z.config(z.locales.tk());
|
|
|
|
const invalidType = z.number().safeParse("a");
|
|
expect(invalidType.error!.issues[0].code).toBe("invalid_type");
|
|
expect(invalidType.error!.issues[0].message).toBe("Nädogry baha: garaşylan number ýerine string alyndy");
|
|
|
|
const invalidType2 = z.string().safeParse(1);
|
|
expect(invalidType2.error!.issues[0].code).toBe("invalid_type");
|
|
expect(invalidType2.error!.issues[0].message).toBe("Nädogry baha: garaşylan string ýerine number alyndy");
|
|
|
|
const invalidValue = z.enum(["a", "b"]).safeParse(1);
|
|
expect(invalidValue.error!.issues[0].code).toBe("invalid_value");
|
|
expect(invalidValue.error!.issues[0].message).toBe('Nädogry saýlaw: aşakdakylardan biri bolmaly: "a"|"b"');
|
|
|
|
const tooBig = z.number().max(10).safeParse(15);
|
|
expect(tooBig.error!.issues[0].code).toBe("too_big");
|
|
expect(tooBig.error!.issues[0].message).toBe("Has uly: garaşylýan number <= 10");
|
|
|
|
const tooSmall = z.number().min(10).safeParse(5);
|
|
expect(tooSmall.error!.issues[0].code).toBe("too_small");
|
|
expect(tooSmall.error!.issues[0].message).toBe("Has kiçi: garaşylýan number >= 10");
|
|
|
|
const invalidFormatRegex = z.string().regex(/abcd/).safeParse("invalid-string");
|
|
expect(invalidFormatRegex.error!.issues[0].code).toBe("invalid_format");
|
|
expect(invalidFormatRegex.error!.issues[0].message).toBe("Nädogry setir: /abcd/ nusga laýyk bolmaly");
|
|
|
|
const invalidFormatStartsWith = z.string().startsWith("abcd").safeParse("invalid-string");
|
|
expect(invalidFormatStartsWith.error!.issues[0].code).toBe("invalid_format");
|
|
expect(invalidFormatStartsWith.error!.issues[0].message).toBe('Nädogry setir: "abcd" bilen başlamaly');
|
|
|
|
const notMultipleOf = z.number().multipleOf(3).safeParse(10);
|
|
expect(notMultipleOf.error!.issues[0].code).toBe("not_multiple_of");
|
|
expect(notMultipleOf.error!.issues[0].message).toBe("Nädogry san: 3 bilen galyndysyz bölünmeli");
|
|
|
|
const unrecognizedKeys = z.object({ a: z.string(), b: z.number() }).strict().safeParse({ a: "a", b: 1, c: 2 });
|
|
expect(unrecognizedKeys.error!.issues[0].code).toBe("unrecognized_keys");
|
|
expect(unrecognizedKeys.error!.issues[0].message).toBe('Tanalmaýan açar: "c"');
|
|
|
|
const invalidUnion = z.union([z.string(), z.number()]).safeParse(true);
|
|
expect(invalidUnion.error!.issues[0].code).toBe("invalid_union");
|
|
expect(invalidUnion.error!.issues[0].message).toBe("Nädogry baha");
|
|
});
|