import { Type } from "@sinclair/typebox"; import { expect, it } from "bun:test"; import { createOrCastValue } from ".."; it("should create a value", () => { const value = createOrCastValue({ schema: Type.Number(), defs: {} }); expect(value).toEqual(0); }); it("should create an object value", () => { const value = createOrCastValue({ schema: Type.Object({ a: Type.Number() }), defs: {}, }); expect(value).toEqual({ a: 0 }); }); it("should add a missing key to an object value", () => { const value = createOrCastValue({ schema: Type.Object({ a: Type.Number(), b: Type.Number() }), value: { a: 1 }, defs: {}, }); expect(value).toEqual({ a: 1, b: 0 }); }); it("creates record", () => { const value = createOrCastValue({ schema: Type.Record(Type.String(), Type.Number()), defs: {}, }); expect(value).toEqual({}); }); it("creates tokens", () => { const colorTokenSchema = Type.Object({ $type: Type.Literal("color"), $value: Type.String(), }); const dimensionTokenSchema = Type.Object({ $type: Type.Literal("dimension"), $value: Type.String(), }); const tokenSchema = Type.Union([colorTokenSchema, dimensionTokenSchema]); const schema = Type.Object( { tokens: Type.Record(Type.String(), tokenSchema), }, { version: 10 } ); expect(createOrCastValue({ schema, defs: {} })).toEqual({ tokens: {} }); });