...
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