You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
909 B
49 lines
909 B
'use strict'
|
|
|
|
const t = require('tap')
|
|
const build = require('..')
|
|
|
|
t.test('nested ref requires ajv', async t => {
|
|
const schemaA = {
|
|
$id: 'urn:schema:a',
|
|
definitions: {
|
|
foo: { anyOf: [{ type: 'string' }, { type: 'null' }] }
|
|
}
|
|
}
|
|
|
|
const schemaB = {
|
|
$id: 'urn:schema:b',
|
|
type: 'object',
|
|
properties: {
|
|
results: {
|
|
type: 'object',
|
|
properties: {
|
|
items: {
|
|
type: 'object',
|
|
properties: {
|
|
bar: {
|
|
type: 'array',
|
|
items: { $ref: 'urn:schema:a#/definitions/foo' }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
const stringify = build(schemaB, {
|
|
schema: {
|
|
[schemaA.$id]: schemaA
|
|
}
|
|
})
|
|
const result = stringify({
|
|
results: {
|
|
items: {
|
|
bar: ['baz']
|
|
}
|
|
}
|
|
})
|
|
t.same(result, '{"results":{"items":{"bar":["baz"]}}}')
|
|
})
|