Skip to content

Commit

Permalink
Merge pull request #674 from lehni/fix/additional-properties-message
Browse files Browse the repository at this point in the history
Fix additionalProperties error with errorDataPath
  • Loading branch information
epoberezkin committed Jan 26, 2018
2 parents 2726d29 + 4a12ca3 commit 1f75c51
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
2 changes: 1 addition & 1 deletion lib/dot/errors.def
Expand Up @@ -94,7 +94,7 @@
'false schema': "'boolean schema is false'",
$ref: "'can\\\'t resolve reference {{=it.util.escapeQuotes($schema)}}'",
additionalItems: "'should NOT have more than {{=$schema.length}} items'",
additionalProperties: "'should NOT have additional properties'",
additionalProperties: "'{{? it.opts._errorDataPathProperty }}is an invalid additional property{{??}}should NOT have additional properties{{?}}'",
anyOf: "'should match some schema in anyOf'",
const: "'should be equal to constant'",
contains: "'should contain a valid item'",
Expand Down
21 changes: 14 additions & 7 deletions spec/errors.spec.js
Expand Up @@ -64,22 +64,23 @@ describe('Validation errors', function () {
, invalidData = { foo: 1, bar: 2, baz: 3, quux: 4 };

var path = pathFunc(errorDataPath);
var msg = additionalFunc(errorDataPath);

var validate = ajv.compile(schema);
shouldBeValid(validate, data);
shouldBeInvalid(validate, invalidData);
shouldBeError(validate.errors[0], 'additionalProperties', '#/additionalProperties', path("['baz']"), undefined, { additionalProperty: 'baz' });
shouldBeError(validate.errors[0], 'additionalProperties', '#/additionalProperties', path("['baz']"), msg, { additionalProperty: 'baz' });

var validateJP = ajvJP.compile(schema);
shouldBeValid(validateJP, data);
shouldBeInvalid(validateJP, invalidData);
shouldBeError(validateJP.errors[0], 'additionalProperties', '#/additionalProperties', path("/baz"), undefined, { additionalProperty: 'baz' });
shouldBeError(validateJP.errors[0], 'additionalProperties', '#/additionalProperties', path("/baz"), msg, { additionalProperty: 'baz' });

var fullValidate = fullAjv.compile(schema);
shouldBeValid(fullValidate, data);
shouldBeInvalid(fullValidate, invalidData, 2);
shouldBeError(fullValidate.errors[0], 'additionalProperties', '#/additionalProperties', path('/baz'), undefined, { additionalProperty: 'baz' });
shouldBeError(fullValidate.errors[1], 'additionalProperties', '#/additionalProperties', path('/quux'), undefined, { additionalProperty: 'quux' });
shouldBeError(fullValidate.errors[0], 'additionalProperties', '#/additionalProperties', path('/baz'), msg, { additionalProperty: 'baz' });
shouldBeError(fullValidate.errors[1], 'additionalProperties', '#/additionalProperties', path('/quux'), msg, { additionalProperty: 'quux' });

if (errorDataPath == 'property') {
fullValidate.errors
Expand Down Expand Up @@ -184,7 +185,7 @@ describe('Validation errors', function () {
delete invalidData2[98];

var path = pathFunc(errorDataPath);
var msg = msgFunc(errorDataPath);
var msg = requiredFunc(errorDataPath);

test();

Expand Down Expand Up @@ -368,7 +369,7 @@ describe('Validation errors', function () {
, invalidData2 = { bar: 2 };

var path = pathFunc(errorDataPath);
var msg = msgFunc(errorDataPath);
var msg = requiredFunc(errorDataPath);

var validate = ajv.compile(schema);
shouldBeValid(validate, data);
Expand Down Expand Up @@ -399,14 +400,20 @@ describe('Validation errors', function () {
};
}

function msgFunc(errorDataPath) {
function requiredFunc(errorDataPath) {
return function (prop) {
return errorDataPath == 'property'
? 'is a required property'
: 'should have required property \'' + prop + '\'';
};
}

function additionalFunc(errorDataPath) {
return errorDataPath == 'property'
? 'is an invalid additional property'
: 'should NOT have additional properties';
}


it('"items" errors should include item index without quotes in dataPath (#48)', function() {
var schema1 = {
Expand Down

0 comments on commit 1f75c51

Please sign in to comment.