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>
123 lines
4 KiB
Text
123 lines
4 KiB
Text
// @ts-ignore TS6133
|
|
import { expect, expectTypeOf, test } from "vitest";
|
|
|
|
import * as z from "zod/v4";
|
|
|
|
test(".optional()", () => {
|
|
const schema = z.string().optional();
|
|
expect(schema.parse("adsf")).toEqual("adsf");
|
|
expect(schema.parse(undefined)).toEqual(undefined);
|
|
expect(schema.safeParse(null).success).toEqual(false);
|
|
|
|
expectTypeOf<typeof schema._output>().toEqualTypeOf<string | undefined>();
|
|
});
|
|
|
|
test("unwrap", () => {
|
|
const unwrapped = z.string().optional().unwrap();
|
|
expect(unwrapped).toBeInstanceOf(z.ZodString);
|
|
});
|
|
|
|
test("optionality", () => {
|
|
const a = z.string();
|
|
expect(a._zod.optin).toEqual(undefined);
|
|
expect(a._zod.optout).toEqual(undefined);
|
|
|
|
const b = z.string().optional();
|
|
expect(b._zod.optin).toEqual("optional");
|
|
expect(b._zod.optout).toEqual("optional");
|
|
|
|
const c = z.string().default("asdf");
|
|
expect(c._zod.optin).toEqual("optional");
|
|
expect(c._zod.optout).toEqual(undefined);
|
|
|
|
const d = z.string().optional().nullable();
|
|
expect(d._zod.optin).toEqual("optional");
|
|
expect(d._zod.optout).toEqual("optional");
|
|
|
|
const e = z.string().default("asdf").nullable();
|
|
expect(e._zod.optin).toEqual("optional");
|
|
expect(e._zod.optout).toEqual(undefined);
|
|
|
|
// z.undefined should NOT be optional
|
|
const f = z.undefined();
|
|
expect(f._zod.optin).toEqual("optional");
|
|
expect(f._zod.optout).toEqual("optional");
|
|
expectTypeOf<typeof f._zod.optin>().toEqualTypeOf<"optional" | undefined>();
|
|
expectTypeOf<typeof f._zod.optout>().toEqualTypeOf<"optional" | undefined>();
|
|
|
|
// z.union should be optional if any of the types are optional
|
|
const g = z.union([z.string(), z.undefined()]);
|
|
expect(g._zod.optin).toEqual("optional");
|
|
expect(g._zod.optout).toEqual("optional");
|
|
expectTypeOf<typeof g._zod.optin>().toEqualTypeOf<"optional" | undefined>();
|
|
expectTypeOf<typeof g._zod.optout>().toEqualTypeOf<"optional" | undefined>();
|
|
|
|
const h = z.union([z.string(), z.optional(z.string())]);
|
|
expect(h._zod.optin).toEqual("optional");
|
|
expect(h._zod.optout).toEqual("optional");
|
|
expectTypeOf<typeof h._zod.optin>().toEqualTypeOf<"optional">();
|
|
expectTypeOf<typeof h._zod.optout>().toEqualTypeOf<"optional">();
|
|
});
|
|
|
|
test("pipe optionality", () => {
|
|
z.string().optional()._zod.optin;
|
|
const a = z.string().optional().pipe(z.string());
|
|
expect(a._zod.optin).toEqual("optional");
|
|
expect(a._zod.optout).toEqual(undefined);
|
|
expectTypeOf<typeof a._zod.optin>().toEqualTypeOf<"optional">();
|
|
expectTypeOf<typeof a._zod.optout>().toEqualTypeOf<"optional" | undefined>();
|
|
|
|
const b = z
|
|
.string()
|
|
.transform((val) => (Math.random() ? val : undefined))
|
|
.pipe(z.string().optional());
|
|
expect(b._zod.optin).toEqual(undefined);
|
|
expect(b._zod.optout).toEqual("optional");
|
|
expectTypeOf<typeof b._zod.optin>().toEqualTypeOf<"optional" | undefined>();
|
|
expectTypeOf<typeof b._zod.optout>().toEqualTypeOf<"optional">();
|
|
|
|
const c = z.string().default("asdf").pipe(z.string());
|
|
expect(c._zod.optin).toEqual("optional");
|
|
expect(c._zod.optout).toEqual(undefined);
|
|
|
|
const d = z
|
|
.string()
|
|
.transform((val) => (Math.random() ? val : undefined))
|
|
.pipe(z.string().default("asdf"));
|
|
expect(d._zod.optin).toEqual(undefined);
|
|
expect(d._zod.optout).toEqual(undefined);
|
|
});
|
|
|
|
test("pipe optionality inside objects", () => {
|
|
const schema = z.object({
|
|
a: z.string().optional(),
|
|
b: z.string().optional().pipe(z.string()),
|
|
c: z.string().default("asdf").pipe(z.string()),
|
|
d: z
|
|
.string()
|
|
.transform((val) => (Math.random() ? val : undefined))
|
|
.pipe(z.string().optional()),
|
|
e: z
|
|
.string()
|
|
.transform((val) => (Math.random() ? val : undefined))
|
|
.pipe(z.string().default("asdf")),
|
|
});
|
|
|
|
type SchemaIn = z.input<typeof schema>;
|
|
expectTypeOf<SchemaIn>().toEqualTypeOf<{
|
|
a?: string | undefined;
|
|
b?: string | undefined;
|
|
c?: string | undefined;
|
|
d: string;
|
|
e: string;
|
|
}>();
|
|
|
|
type SchemaOut = z.output<typeof schema>;
|
|
expectTypeOf<SchemaOut>().toEqualTypeOf<{
|
|
a?: string | undefined;
|
|
b: string;
|
|
c: string;
|
|
d?: string | undefined;
|
|
e: string;
|
|
}>();
|
|
});
|