Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
35 lines
1.0 KiB
Plaintext
35 lines
1.0 KiB
Plaintext
import { expect, expectTypeOf, test } from "vitest";
|
|
import * as z from "zod/v4";
|
|
|
|
test("instanceof", async () => {
|
|
class Test {}
|
|
class Subtest extends Test {}
|
|
abstract class AbstractBar {
|
|
constructor(public val: string) {}
|
|
}
|
|
class Bar extends AbstractBar {}
|
|
|
|
const TestSchema = z.instanceof(Test);
|
|
const SubtestSchema = z.instanceof(Subtest);
|
|
const AbstractSchema = z.instanceof(AbstractBar);
|
|
const BarSchema = z.instanceof(Bar);
|
|
|
|
TestSchema.parse(new Test());
|
|
TestSchema.parse(new Subtest());
|
|
SubtestSchema.parse(new Subtest());
|
|
AbstractSchema.parse(new Bar("asdf"));
|
|
const bar = BarSchema.parse(new Bar("asdf"));
|
|
expect(bar.val).toEqual("asdf");
|
|
|
|
await expect(() => SubtestSchema.parse(new Test())).toThrow();
|
|
await expect(() => TestSchema.parse(12)).toThrow();
|
|
|
|
expectTypeOf<Test>().toEqualTypeOf<z.infer<typeof TestSchema>>();
|
|
});
|
|
|
|
test("instanceof fatal", () => {
|
|
const schema = z.instanceof(Date).refine((d) => d.toString());
|
|
const res = schema.safeParse(null);
|
|
expect(res.success).toBe(false);
|
|
});
|