-
-
Notifications
You must be signed in to change notification settings - Fork 58
/
typeReference.test.ts
39 lines (34 loc) · 1.01 KB
/
typeReference.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import { attest, contextualize } from "@ark/attest"
import { writeUnresolvableMessage } from "@ark/schema"
import { ark, scope, type } from "arktype"
contextualize(() => {
it("shallow type reference", () => {
const t = type(type("boolean"))
attest<boolean>(t.infer)
})
it("bad shallow type reference", () => {
attest(() => {
// @ts-expect-error
type(type("foolean"))
}).throwsAndHasTypeError(writeUnresolvableMessage("foolean"))
})
it("deep type reference", () => {
const t = type({ a: type("boolean") })
attest<{ a: boolean }>(t.infer)
})
it("type reference in scope", () => {
const a = type({ a: "string" })
const $ = scope({ a })
const types = $.export()
attest(types.a.json).equals(a.json)
attest(a.$.json).equals(ark.json)
attest(types.a.$.json).equals($.json)
attest<{ a: string }>(types.a.infer)
})
it("bad deep type reference", () => {
attest(() => {
// @ts-expect-error
type({ a: type("goolean") })
}).throwsAndHasTypeError(writeUnresolvableMessage("goolean"))
})
})