Spaces:
Runtime error
Runtime error
| const assert = require('node:assert/strict') | |
| const { test } = require('node:test') | |
| const { RefResolver } = require('../index.js') | |
| test('should return all nested schema dependencies', () => { | |
| const refResolver = new RefResolver() | |
| const schema1Id = 'schemaId1' | |
| const schema1 = { | |
| $id: schema1Id, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| const schema2Id = 'schemaId2' | |
| const schema2 = { | |
| $id: schema2Id, | |
| $ref: schema1Id | |
| } | |
| const schema3Id = 'schemaId3' | |
| const schema3 = { | |
| $id: schema3Id, | |
| $ref: schema2Id | |
| } | |
| refResolver.addSchema(schema1) | |
| refResolver.addSchema(schema2) | |
| refResolver.addSchema(schema3) | |
| const schema1Deps = refResolver.getSchemaDependencies(schema1Id) | |
| assert.deepStrictEqual(schema1Deps, {}) | |
| const schema2Deps = refResolver.getSchemaDependencies(schema2Id) | |
| assert.deepStrictEqual(schema2Deps, { [schema1Id]: schema1 }) | |
| const schema3Deps = refResolver.getSchemaDependencies(schema3Id) | |
| assert.deepStrictEqual(schema3Deps, { | |
| [schema1Id]: schema1, | |
| [schema2Id]: schema2 | |
| }) | |
| }) | |
| test('should resolve a dependency to a subschema', () => { | |
| const refResolver = new RefResolver() | |
| const schema1Id = 'schemaId1' | |
| const subSchema1Id = 'subSchemaId1' | |
| const schema1 = { | |
| $id: schema1Id, | |
| definitions: { | |
| subSchema: { | |
| $id: subSchema1Id, | |
| type: 'object', | |
| properties: { | |
| bar: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| const schema2Id = 'schemaId2' | |
| const schema2 = { | |
| $id: schema2Id, | |
| $ref: subSchema1Id + '#/definitions/subSchema' | |
| } | |
| refResolver.addSchema(schema1) | |
| refResolver.addSchema(schema2) | |
| const schema1Deps = refResolver.getSchemaDependencies(schema1Id) | |
| assert.deepStrictEqual(schema1Deps, {}) | |
| const schema2Deps = refResolver.getSchemaDependencies(schema2Id) | |
| assert.deepStrictEqual(schema2Deps, { [subSchema1Id]: schema1.definitions.subSchema }) | |
| }) | |
| test('should resolve a dependency with a json path', () => { | |
| const refResolver = new RefResolver() | |
| const schema1Id = 'schemaId1' | |
| const subSchema1Id = 'subSchemaId1' | |
| const schema1 = { | |
| $id: schema1Id, | |
| definitions: { | |
| subSchema: { | |
| $id: subSchema1Id, | |
| type: 'object', | |
| properties: { | |
| bar: { type: 'string' } | |
| } | |
| } | |
| } | |
| } | |
| const schema2Id = 'schemaId2' | |
| const schema2 = { | |
| $id: schema2Id, | |
| $ref: schema1Id + '#/definitions/subSchema' | |
| } | |
| refResolver.addSchema(schema1) | |
| refResolver.addSchema(schema2) | |
| const schema1Deps = refResolver.getSchemaDependencies(schema1Id) | |
| assert.deepStrictEqual(schema1Deps, {}) | |
| const schema2Deps = refResolver.getSchemaDependencies(schema2Id) | |
| assert.deepStrictEqual(schema2Deps, { [schema1Id]: schema1 }) | |
| }) | |
| test('should include dependency schema only once', () => { | |
| const refResolver = new RefResolver() | |
| const schema1Id = 'schemaId1' | |
| const schema1 = { | |
| $id: schema1Id, | |
| type: 'object', | |
| properties: { | |
| foo: { type: 'string' } | |
| } | |
| } | |
| const schema2Id = 'schemaId2' | |
| const schema2 = { | |
| $id: schema2Id, | |
| $ref: schema1Id | |
| } | |
| const schema3Id = 'schemaId3' | |
| const schema3 = { | |
| $id: schema3Id, | |
| allOf: [ | |
| { $ref: schema1Id }, | |
| { $ref: schema2Id } | |
| ] | |
| } | |
| refResolver.addSchema(schema1) | |
| refResolver.addSchema(schema2) | |
| refResolver.addSchema(schema3) | |
| const schema1Deps = refResolver.getSchemaDependencies(schema1Id) | |
| assert.deepStrictEqual(schema1Deps, {}) | |
| const schema2Deps = refResolver.getSchemaDependencies(schema2Id) | |
| assert.deepStrictEqual(schema2Deps, { [schema1Id]: schema1 }) | |
| const schema3Deps = refResolver.getSchemaDependencies(schema3Id) | |
| assert.deepStrictEqual(schema3Deps, { | |
| [schema1Id]: schema1, | |
| [schema2Id]: schema2 | |
| }) | |
| }) | |