A chai plugin for validate json schema.
This is based on ajv, a JSON schema Validator.
version | ajv version | json schema version |
---|---|---|
v1 | 4.11.8 | JSON Schema draft 4 |
v2 | 5.5.2 | JSON Schema draft-06 |
v3 | 6.1.1 | JSON Schema draft-07 |
npm install chai-json-schema-ajv
const chai = require('chai')
chai.use(require('chai-json-schema-ajv'))
const expect = chai.expect
let apple = {
name: 'foo',
color: ['red', 'green', 'yellow'],
value: 10
}
let schema = {
title: 'fruit schema v0.1',
type: 'object',
required: ['name', 'color', 'value'],
properties: {
name: {
type: 'string',
minLength: 3
},
color: {
type: 'array',
minItems: 1,
uniqueItems: true,
items: {
type: 'string'
}
},
value: {
type: 'integer',
minimum: 5
}
}
}
expect(apple).to.be.jsonSchema(schema)
const chai = require('chai')
chai.use(require('chai-json-schema-ajv'))
const expect = chai.expect
let schema = {
title: 'valid schema',
type: 'object',
required: ['name'],
properties: {
name: {
type: 'string',
minLength: 3
}
}
}
expect(schema).to.be.validJsonSchema
const options = { ... }
chai.use(require('chai-json-schema-ajv').withOptions(options))
...
- options will be send to ajv
Default error message is parsed by
ajv.errorsText
.
...
chai.use(require('chai-json-schema-ajv')
...
expected value not match the json-schema
data.value should be integer
It will print full errors with the option
{verbose: true}
...
chai.use(require('chai-json-schema-ajv').withOptions({ verbose: true }))
...
expected value not match the json-schema
[
{
"keyword": "type",
"dataPath": ".value",
"schemaPath": "#/properties/value/type",
"params": {
"type": "integer"
},
"message": "should be integer",
"schema": "integer",
"parentSchema": {
"type": "integer"
},
"data": 1.1
}
]
- support browser side
- move to es2017 async/await
add lintsend option to ajv(thanks @dimac)
MIT