Skip to content

Commit 0d511c6

Browse files
authored
Merge pull request jdorn#730 from tohosaku/Fix_param_order
Fix parameter order and Add test case
2 parents c6db13e + 7b2ba67 commit 0d511c6

File tree

2 files changed

+52
-14
lines changed

2 files changed

+52
-14
lines changed

src/schemaloader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ export class SchemaLoader {
208208
this.refs[url] = 'loading'
209209
waiting++
210210

211-
const fetchUrl = this._isLocalUrl(fileBase, url) ? fileBase + url : url
211+
const fetchUrl = this._isLocalUrl(url, fileBase) ? fileBase + url : url
212212

213213
const r = new XMLHttpRequest()
214214
r.overrideMimeType('application/json')

tests/unit/schemaloader.spec.js

+51-13
Original file line numberDiff line numberDiff line change
@@ -51,29 +51,19 @@ describe('SchemaLoader', () => {
5151
})
5252

5353
describe('when external ref exists', () => {
54-
let response
55-
let server
56-
57-
beforeAll(() => {
58-
response = {
54+
it('should set oprion { ajax: true }', done => {
55+
const response = {
5956
type: 'string',
6057
minLength: 4
6158
}
62-
server = createFakeServer()
59+
const server = createFakeServer()
6360
server.autoRespond = true
6461
window.XMLHttpRequest = server.xhr
6562
server.respondWith([
6663
200,
6764
{ 'Content-Type': 'application/json' },
6865
JSON.stringify(response)
6966
])
70-
})
71-
72-
afterAll(() => {
73-
server.restore()
74-
})
75-
76-
it('should set oprion { ajax: true }', done => {
7767
fetchUrl =
7868
document.location.origin + document.location.pathname.toString()
7969
loader = new SchemaLoader({ ajax: true })
@@ -92,6 +82,54 @@ describe('SchemaLoader', () => {
9282
const urls = Object.keys(loader.refs)
9383
expect(urls.length).toEqual(1)
9484
done()
85+
server.restore()
86+
},
87+
fetchUrl,
88+
fileBase
89+
)
90+
})
91+
})
92+
93+
describe('when external relative $ref exists', () => {
94+
it('can get refs recursively', done => {
95+
const schema1 = {
96+
type: 'object',
97+
properties: {
98+
fname: { $ref: '/schema/main.json' },
99+
lname: { $ref: '/schema/main.json' }
100+
}
101+
}
102+
const schema2 = {
103+
$ref: 'registry/sub.json'
104+
}
105+
const schema3 = {
106+
type: 'string',
107+
minLength: 4
108+
}
109+
const server = createFakeServer()
110+
server.autoRespond = true
111+
window.XMLHttpRequest = server.xhr
112+
server.respondWith('/schema/main.json', [
113+
200,
114+
{ 'Content-Type': 'application/json' },
115+
JSON.stringify(schema2)
116+
])
117+
server.respondWith('/schema/registry/sub.json', [
118+
200,
119+
{ 'Content-Type': 'application/json' },
120+
JSON.stringify(schema3)
121+
])
122+
fetchUrl =
123+
document.location.origin + document.location.pathname.toString()
124+
loader = new SchemaLoader({ ajax: true })
125+
fileBase = loader._getFileBase(document.location.toString())
126+
loader.load(
127+
schema1,
128+
schema => {
129+
console.log(loader.refs_with_info)
130+
expect(Object.keys(loader.refs).length).toBe(2)
131+
done()
132+
server.restore()
95133
},
96134
fetchUrl,
97135
fileBase

0 commit comments

Comments
 (0)