Skip to content

Commit d9580c0

Browse files
committed
new test for resolving nested refs inside extended refs
1 parent fc3f606 commit d9580c0

File tree

7 files changed

+90
-0
lines changed

7 files changed

+90
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"use strict";
2+
3+
module.exports = {
4+
const: "root",
5+
objectchild: {
6+
const: "object-child",
7+
},
8+
arraychild: [
9+
{
10+
const: "array-child",
11+
},
12+
],
13+
};
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"use strict";
2+
3+
const chai = require("chai");
4+
const chaiSubset = require("chai-subset");
5+
chai.use(chaiSubset);
6+
const { expect } = chai;
7+
const $RefParser = require("../../../lib");
8+
const helper = require("../../utils/helper");
9+
const path = require("../../utils/path");
10+
const parsedSchema = require("./parsed");
11+
const dereferencedSchema = require("./dereferenced");
12+
13+
describe("Schema with a $ref nested inside an extended $ref", () => {
14+
it("should parse successfully", async () => {
15+
let parser = new $RefParser();
16+
const schema = await parser.parse(
17+
path.rel("specs/nested-extended/nested-extended.yaml")
18+
);
19+
expect(schema).to.equal(parser.schema);
20+
expect(schema).to.deep.equal(parsedSchema.schema);
21+
expect(parser.$refs.paths()).to.deep.equal([
22+
path.abs("specs/nested-extended/nested-extended.yaml"),
23+
]);
24+
});
25+
26+
it("should resolve successfully", helper.testResolve(
27+
path.rel("specs/nested-extended/nested-extended.yaml"),
28+
path.abs("specs/nested-extended/nested-extended.yaml"), parsedSchema.schema,
29+
path.abs("specs/nested-extended/referenced-root.yaml"), parsedSchema.root,
30+
path.abs("specs/nested-extended/referenced-object-child.yaml"), parsedSchema.objectchild,
31+
path.abs("specs/nested-extended/referenced-array-child.yaml"), parsedSchema.arraychild
32+
));
33+
34+
it("should dereference successfully", async () => {
35+
let parser = new $RefParser();
36+
const schema = await parser.dereference(
37+
path.rel("specs/nested-extended/nested-extended.yaml")
38+
);
39+
expect(schema).to.equal(parser.schema);
40+
expect(schema).to.deep.equal(dereferencedSchema);
41+
});
42+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
$ref: "referenced-root.yaml"
2+
objectchild:
3+
$ref: "referenced-object-child.yaml"
4+
arraychild:
5+
- $ref: "referenced-array-child.yaml"

test/specs/nested-extended/parsed.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"use strict";
2+
3+
module.exports = {
4+
schema: {
5+
$ref: "referenced-root.yaml",
6+
objectchild: {
7+
$ref: "referenced-object-child.yaml",
8+
},
9+
arraychild: [
10+
{
11+
$ref: "referenced-array-child.yaml",
12+
},
13+
],
14+
},
15+
16+
root: {
17+
const: "root",
18+
},
19+
20+
objectchild: {
21+
const: "object-child",
22+
},
23+
24+
arraychild: {
25+
const: "array-child",
26+
},
27+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const: "array-child"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const: "object-child"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const: "root"

0 commit comments

Comments
 (0)