Projektstart
This commit is contained in:
158
backend/node_modules/json-schema-ref-resolver/test/get-schema-dependencies.test.js
generated
vendored
Normal file
158
backend/node_modules/json-schema-ref-resolver/test/get-schema-dependencies.test.js
generated
vendored
Normal file
@@ -0,0 +1,158 @@
|
||||
'use strict'
|
||||
|
||||
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
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user