This commit is contained in:
20
src/tests.ts
20
src/tests.ts
@@ -1,6 +1,8 @@
|
||||
import { Implements } from "@thilawyn/traitify-ts"
|
||||
import { Implements, expression } from "@thilawyn/traitify-ts"
|
||||
import { z } from "zod"
|
||||
import { ZodSchemaClass } from "./ZodSchemaClass"
|
||||
import { dejsonify, jsonify } from "./schema/jsonifiable"
|
||||
import { JsonifiedZodSchemaObject } from "./traits/JsonifiedZodSchemaObject"
|
||||
import { MobXObservableZodSchemaObject } from "./traits/MobXObservableZodSchemaObject"
|
||||
|
||||
|
||||
@@ -27,6 +29,22 @@ const inst = User.create({ id: 1n, name: "User" })
|
||||
const instEffect = User.createEffect({ id: 1n, name: "User" })
|
||||
|
||||
|
||||
const jsonifiedUserExp = expression.expresses(
|
||||
JsonifiedZodSchemaObject(User, {
|
||||
jsonifySchema: s => s.extend({
|
||||
id: jsonify.bigint(s.shape.id)
|
||||
}),
|
||||
|
||||
dejsonifySchema: s => s.extend({
|
||||
id: dejsonify.bigint(s.shape.id)
|
||||
}),
|
||||
})
|
||||
).build()
|
||||
|
||||
@jsonifiedUserExp.staticImplements
|
||||
class JsonifiedUser extends jsonifiedUserExp.extends implements Implements<typeof jsonifiedUserExp> {}
|
||||
|
||||
|
||||
const adminUserExp = User.extend(s => s.extend({
|
||||
role: z.literal("Admin").default("Admin")
|
||||
})).build()
|
||||
|
||||
Reference in New Issue
Block a user