diff --git a/src/lib/plugins/validator/createAjvValidator.test.ts b/src/lib/plugins/validator/createAjvValidator.test.ts index 83e69a40..f672860e 100644 --- a/src/lib/plugins/validator/createAjvValidator.test.ts +++ b/src/lib/plugins/validator/createAjvValidator.test.ts @@ -67,23 +67,23 @@ const schemaDefinitions = { } } +const invalidJson = { + firstName: 'John', + lastName: 'Doe', + gender: null, + age: '28', + availableToHire: true, + job: { + company: 'freelance', + role: 'developer', + salary: 100 + } +} + describe('createAjvValidator', () => { it('should create a validate function', () => { const validate = createAjvValidator(schema, schemaDefinitions) - const invalidJson = { - firstName: 'John', - lastName: 'Doe', - gender: null, - age: '28', - availableToHire: true, - job: { - company: 'freelance', - role: 'developer', - salary: 100 - } - } - assert.deepStrictEqual(validate(invalidJson), [ { path: ['gender'], @@ -96,5 +96,19 @@ describe('createAjvValidator', () => { ]) }) + it('should pass additional Ajv options', () => { + const validate = createAjvValidator(schema, schemaDefinitions, { + allErrors: false + }) + + assert.deepStrictEqual(validate(invalidJson), [ + { + path: ['gender'], + message: 'should be equal to one of: "male", "female"', + severity: 'warning' + } + ]) + }) + // TODO: test support for draft04, draft-06, draft-07 }) diff --git a/src/lib/plugins/validator/createAjvValidator.ts b/src/lib/plugins/validator/createAjvValidator.ts index 2315aa13..91f590f6 100644 --- a/src/lib/plugins/validator/createAjvValidator.ts +++ b/src/lib/plugins/validator/createAjvValidator.ts @@ -1,3 +1,4 @@ +import type { Options as AjvOptions } from 'ajv' import Ajv from 'ajv-dist' import type { JSONData } from 'immutable-json-patch' import { parsePath } from 'immutable-json-patch' @@ -10,16 +11,19 @@ import { ValidationSeverity } from '../../types.js' * @param [schemaDefinitions=undefined] * An object containing JSON Schema definitions * which can be referenced using $ref + * @param [ajvOptions] Optional extra options for Ajv * @return Returns a validation function */ export function createAjvValidator( schema: JSONData, - schemaDefinitions: JSONData = undefined + schemaDefinitions: JSONData = undefined, + ajvOptions: AjvOptions = undefined ): Validator { const ajv = new Ajv({ allErrors: true, verbose: true, - $data: true + $data: true, + ...ajvOptions }) if (schemaDefinitions) {