cuelang.org/go@v0.10.1/encoding/jsonschema/testdata/ref.txtar (about)

     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/decode/cue --
    67  import (
    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")
    75  person?:           #person
    76  billing_address?:  #address
    77  shipping_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  ...