...

Text file src/cuelang.org/go/encoding/jsonschema/testdata/ref.txtar

Documentation: cuelang.org/go/encoding/jsonschema/testdata

     1// This test tests the conversion and ordering of $defs.
     2
     3#noverify
     4
     5-- definition.json --
     6{
     7  "$schema": "http://json-schema.org/draft-07/schema#",
     8
     9  "$id": "http://cuelang.org/go/encoding/openapi/testdata/order.json",
    10
    11  "$defs": {
    12    "address": {
    13      "type": "object",
    14      "properties": {
    15        "city": { "type": "string" }
    16      }
    17    },
    18    "int": {
    19      "type": "integer"
    20    },
    21    "string-int": {
    22      "type": [ "integer", "string" ]
    23    },
    24    "person": {
    25      "type": "object",
    26      "properties": {
    27        "name": { "type": "string" },
    28        "children": {
    29          "type": "object",
    30          "properties": {
    31              "x": { "$ref": "http://acme.com/external.json#/properties/foo" },
    32
    33              "a": { "$ref": "#/$defs/int" },
    34              "b": { "$ref": "http://cuelang.org/person.json#/$defs/int" },
    35              "c": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/int" },
    36              "d": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/address" },
    37              "e": { "$ref": "http://cuelang.org/go/encoding/openapi/testdata/order.json#/$defs/string-int" },
    38              "f": { "$ref": "http://cuelang.org/person.json" },
    39              "g": { "$ref": "http://acme.com/external.json#/definitions/foo" },
    40              "h": { "$ref": "http://acme.com/external.json#/properties/foo" },
    41              "i": { "$ref": "http://acme.com/external.json" },
    42              "j": { "$ref": "http://acme.com/external-foo.json" },
    43              "k": { "$ref": "http://acme.com/external-bar.json" },
    44              "z": {}
    45          }
    46        }
    47      },
    48      "$id": "http://cuelang.org/person.json",
    49      "$defs": {
    50        "int": {
    51          "type": "integer"
    52        }
    53      }
    54    }
    55  },
    56
    57  "type": "object",
    58
    59  "properties": {
    60    "person": { "$ref": "#/$defs/person" },
    61    "billing_address": { "$ref": "#/$defs/address" },
    62    "shipping_address": { "$ref": "#/$defs/address" }
    63  }
    64}
    65
    66-- out.cue --
    67import (
    68	"acme.com/external.json:external"
    69	"acme.com/external-foo.json:schema"
    70	schema_5 "acme.com/external-bar.json:schema"
    71)
    72
    73@jsonschema(schema="http://json-schema.org/draft-07/schema#")
    74@jsonschema(id="http://cuelang.org/go/encoding/openapi/testdata/order.json")
    75person?:           #person
    76billing_address?:  #address
    77shipping_address?: #address
    78
    79#address: {
    80	city?: string
    81	...
    82}
    83
    84#int_1=#int: int
    85
    86#: "string-int": int | string
    87
    88#person: {
    89	@jsonschema(id="http://cuelang.org/person.json")
    90	name?: string
    91	children?: {
    92		x?: external.foo
    93		a?: #int
    94		b?: #int
    95		c?: #int_1
    96		d?: #address
    97		e?: #["string-int"]
    98		f?: #person
    99		g?: external.#foo
   100		h?: external.foo
   101		i?: external
   102		j?: schema
   103		k?: schema_5
   104		z?: _
   105		...
   106	}
   107
   108	#int: int
   109	...
   110}
   111...

View as plain text