Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
144 lines
4 KiB
Text
144 lines
4 KiB
Text
import { expect, test } from "vitest";
|
|
import * as z from "../index.js";
|
|
|
|
// lt;
|
|
test("z.lt", () => {
|
|
const a = z.number().check(z.lt(10));
|
|
expect(z.safeParse(a, 9).success).toEqual(true);
|
|
expect(z.safeParse(a, 9).data).toEqual(9);
|
|
expect(z.safeParse(a, 10).success).toEqual(false);
|
|
});
|
|
|
|
// lte;
|
|
test("z.lte", () => {
|
|
const a = z.number().check(z.lte(10));
|
|
expect(z.safeParse(a, 10).success).toEqual(true);
|
|
expect(z.safeParse(a, 10).data).toEqual(10);
|
|
expect(z.safeParse(a, 11).success).toEqual(false);
|
|
});
|
|
|
|
// min;
|
|
test("z.max", () => {
|
|
const a = z.number().check(z.maximum(10));
|
|
expect(z.safeParse(a, 10).success).toEqual(true);
|
|
expect(z.safeParse(a, 10).data).toEqual(10);
|
|
expect(z.safeParse(a, 11).success).toEqual(false);
|
|
});
|
|
|
|
// gt;
|
|
test("z.gt", () => {
|
|
const a = z.number().check(z.gt(10));
|
|
expect(z.safeParse(a, 11).success).toEqual(true);
|
|
expect(z.safeParse(a, 11).data).toEqual(11);
|
|
expect(z.safeParse(a, 10).success).toEqual(false);
|
|
});
|
|
|
|
// gte;
|
|
test("z.gte", () => {
|
|
const a = z.number().check(z.gte(10));
|
|
expect(z.safeParse(a, 10).success).toEqual(true);
|
|
expect(z.safeParse(a, 10).data).toEqual(10);
|
|
expect(z.safeParse(a, 9).success).toEqual(false);
|
|
});
|
|
|
|
// min;
|
|
test("z.min", () => {
|
|
const a = z.number().check(z.minimum(10));
|
|
expect(z.safeParse(a, 10).success).toEqual(true);
|
|
expect(z.safeParse(a, 10).data).toEqual(10);
|
|
expect(z.safeParse(a, 9).success).toEqual(false);
|
|
});
|
|
|
|
// maxSize;
|
|
test("z.maxLength", () => {
|
|
const a = z.array(z.string()).check(z.maxLength(3));
|
|
expect(z.safeParse(a, ["a", "b", "c"]).success).toEqual(true);
|
|
expect(z.safeParse(a, ["a", "b", "c", "d"]).success).toEqual(false);
|
|
});
|
|
|
|
// minSize;
|
|
test("z.minLength", () => {
|
|
const a = z.array(z.string()).check(z.minLength(3));
|
|
expect(z.safeParse(a, ["a", "b"]).success).toEqual(false);
|
|
expect(z.safeParse(a, ["a", "b", "c"]).success).toEqual(true);
|
|
});
|
|
|
|
// size;
|
|
test("z.length", () => {
|
|
const a = z.array(z.string()).check(z.length(3));
|
|
expect(z.safeParse(a, ["a", "b"]).success).toEqual(false);
|
|
expect(z.safeParse(a, ["a", "b", "c"]).success).toEqual(true);
|
|
expect(z.safeParse(a, ["a", "b", "c", "d"]).success).toEqual(false);
|
|
});
|
|
|
|
// regex;
|
|
test("z.regex", () => {
|
|
const a = z.string().check(z.regex(/^aaa$/));
|
|
expect(z.safeParse(a, "aaa")).toMatchObject({ success: true, data: "aaa" });
|
|
expect(z.safeParse(a, "aa")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// includes;
|
|
test("z.includes", () => {
|
|
const a = z.string().check(z.includes("asdf"));
|
|
z.parse(a, "qqqasdfqqq");
|
|
z.parse(a, "asdf");
|
|
z.parse(a, "qqqasdf");
|
|
z.parse(a, "asdfqqq");
|
|
expect(z.safeParse(a, "qqq")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// startsWith;
|
|
test("z.startsWith", () => {
|
|
const a = z.string().check(z.startsWith("asdf"));
|
|
z.parse(a, "asdf");
|
|
z.parse(a, "asdfqqq");
|
|
expect(z.safeParse(a, "qqq")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// endsWith;
|
|
test("z.endsWith", () => {
|
|
const a = z.string().check(z.endsWith("asdf"));
|
|
z.parse(a, "asdf");
|
|
z.parse(a, "qqqasdf");
|
|
expect(z.safeParse(a, "asdfqqq")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// lowercase;
|
|
test("z.lowercase", () => {
|
|
const a = z.string().check(z.lowercase());
|
|
z.parse(a, "asdf");
|
|
expect(z.safeParse(a, "ASDF")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// uppercase;
|
|
test("z.uppercase", () => {
|
|
const a = z.string().check(z.uppercase());
|
|
z.parse(a, "ASDF");
|
|
expect(z.safeParse(a, "asdf")).toMatchObject({ success: false });
|
|
});
|
|
|
|
// filename;
|
|
// fileType;
|
|
// overwrite;
|
|
test("z.overwrite", () => {
|
|
const a = z.string().check(z.overwrite((val) => val.toUpperCase()));
|
|
expect(z.safeParse(a, "asdf")).toMatchObject({ data: "ASDF" });
|
|
});
|
|
|
|
// normalize;
|
|
// trim;
|
|
// toLowerCase;
|
|
// toUpperCase;
|
|
// property
|
|
|
|
test("abort early", () => {
|
|
const schema = z.string().check(
|
|
z.refine((val) => val.length > 1),
|
|
z.refine((val) => val.length > 2, { abort: true }),
|
|
z.refine((val) => val.length > 3)
|
|
);
|
|
const data = "";
|
|
const result = z.safeParse(schema, data);
|
|
expect(result.error!.issues.length).toEqual(2);
|
|
});
|