File tree Expand file tree Collapse file tree 1 file changed +146
-0
lines changed Expand file tree Collapse file tree 1 file changed +146
-0
lines changed Original file line number Diff line number Diff line change 1+ 'use strict'
2+
3+ const { test } = require ( 'tap' )
4+
5+ const RefResolver = require ( '../ref-resolver' )
6+
7+ test ( 'Resolve absolute refs in schema' , t => {
8+ t . plan ( 1 )
9+ const opts = {
10+ externalSchemas : [
11+ {
12+ $id : 'ObjectA' ,
13+ type : 'object' ,
14+ properties : {
15+ example : {
16+ type : 'string'
17+ }
18+ }
19+ } ,
20+ {
21+ $id : 'ObjectC' ,
22+ type : 'object' ,
23+ properties : {
24+ referencedObjA : {
25+ $ref : 'ObjectA#'
26+ } ,
27+ referencedObjC : {
28+ $ref : 'ObjectC#/properties/ObjectD'
29+ } ,
30+ ObjectD : {
31+ type : 'object' ,
32+ properties : {
33+ d : {
34+ type : 'string'
35+ }
36+ }
37+ }
38+ }
39+ }
40+ ]
41+ }
42+ const resolver = RefResolver ( )
43+
44+ const out = resolver . resolve ( {
45+ $ref : 'ObjectC#'
46+ } , opts )
47+
48+ t . same ( out , {
49+ $ref : '#/definitions/def-1' ,
50+ definitions : {
51+ 'def-0' : {
52+ $id : 'ObjectA' ,
53+ type : 'object' ,
54+ properties : {
55+ example : {
56+ type : 'string'
57+ }
58+ }
59+ } ,
60+ 'def-1' : {
61+ $id : 'ObjectC' ,
62+ type : 'object' ,
63+ properties : {
64+ referencedObjA : {
65+ $ref : '#/definitions/def-0'
66+ } ,
67+ referencedObjC : {
68+ $ref : '#/definitions/def-1/properties/ObjectD'
69+ } ,
70+ ObjectD : {
71+ type : 'object' ,
72+ properties : {
73+ d : {
74+ type : 'string'
75+ }
76+ }
77+ }
78+ }
79+ }
80+ }
81+ } )
82+ } )
83+
84+ test ( 'Resolve relative refs in schema' , t => {
85+ t . plan ( 1 )
86+ const opts = {
87+ externalSchemas : [
88+ {
89+ $id : 'ObjectA' ,
90+ type : 'object' ,
91+ properties : {
92+ sample : {
93+ type : 'object' ,
94+ properties : {
95+ a : { type : 'string' } ,
96+ b : { type : 'object' , properties : { d : { type : 'string' } } }
97+ }
98+ } ,
99+ someValue : { type : 'string' } ,
100+ relativeExample : {
101+ $ref : '#/properties/sample'
102+ }
103+ }
104+ }
105+ ]
106+ }
107+ const resolver = RefResolver ( )
108+
109+ const out = resolver . resolve ( {
110+ $ref : 'ObjectA#/properties/relativeExample'
111+ } , opts )
112+
113+ t . same ( out , {
114+ $ref : '#/definitions/def-0/properties/relativeExample' ,
115+ definitions : {
116+ 'def-0' : {
117+ $id : 'ObjectA' ,
118+ type : 'object' ,
119+ properties : {
120+ sample : {
121+ type : 'object' ,
122+ properties : {
123+ a : {
124+ type : 'string'
125+ } ,
126+ b : {
127+ type : 'object' ,
128+ properties : {
129+ d : {
130+ type : 'string'
131+ }
132+ }
133+ }
134+ }
135+ } ,
136+ someValue : {
137+ type : 'string'
138+ } ,
139+ relativeExample : {
140+ $ref : '#/properties/sample'
141+ }
142+ }
143+ }
144+ }
145+ } )
146+ } )
You can’t perform that action at this time.
0 commit comments