UNPKG

core-types-literals

Version:

Convert literal objects in JSON, YAML, or TOML, to core-types

143 lines (137 loc) 3.48 kB
import { expect, it } from "vitest"; import { convertJsonToCoreTypes } from ".."; it("handles all types of fields", () => { const json = JSON.stringify({ foo: "bar", bar: 1, baz: true, qux: null, quux: ["a", "b", "c"], quuz: { a: 1, b: 2, c: 3 }, quuux: 1.5, }); expect(convertJsonToCoreTypes(json)).toMatchInlineSnapshot(` { "types": [ { "additionalProperties": false, "name": "Default", "properties": { "bar": { "node": { "const": 1, "type": "integer", }, "required": true, }, "baz": { "node": { "const": true, "type": "boolean", }, "required": true, }, "foo": { "node": { "const": "bar", "type": "string", }, "required": true, }, "quuux": { "node": { "const": 1.5, "type": "number", }, "required": true, }, "quux": { "node": { "additionalItems": false, "elementTypes": [ { "const": "a", "type": "string", }, { "const": "b", "type": "string", }, { "const": "c", "type": "string", }, ], "minItems": 3, "type": "tuple", }, "required": true, }, "quuz": { "node": { "additionalProperties": false, "properties": { "a": { "node": { "const": 1, "type": "integer", }, "required": true, }, "b": { "node": { "const": 2, "type": "integer", }, "required": true, }, "c": { "node": { "const": 3, "type": "integer", }, "required": true, }, }, "type": "object", }, "required": true, }, "qux": { "node": { "type": "null", }, "required": true, }, }, "type": "object", }, ], "version": 1, } `); }); it("supports a custom name", () => { const json = JSON.stringify({ foo: "bar" }); expect(convertJsonToCoreTypes(json, "CustomName")).toMatchInlineSnapshot(` { "types": [ { "additionalProperties": false, "name": "CustomName", "properties": { "foo": { "node": { "const": "bar", "type": "string", }, "required": true, }, }, "type": "object", }, ], "version": 1, } `); });