diff --git a/map/validations/validations.js b/map/validations/validations.js index 594d84a5926..417f5c856d5 100644 --- a/map/validations/validations.js +++ b/map/validations/validations.js @@ -160,11 +160,11 @@ steal('can/util', 'can/map', function (can) { errors[attr].push(res); } }); - }, validations = this.constructor.validations, + }, validations = this.constructor.validations || {}, isTest = attrs && attrs.length === 1 && arguments.length === 2; // go through each attribute or validation and // add any errors - can.each(attrs || validations || {}, function (funcs, attr) { + can.each(attrs || validations, function (funcs, attr) { // if we are iterating through an array, use funcs // as the attr name if (typeof attr === 'number') { diff --git a/map/validations/validations_test.js b/map/validations/validations_test.js index 7de360e8016..e4b87f43918 100644 --- a/map/validations/validations_test.js +++ b/map/validations/validations_test.js @@ -343,4 +343,8 @@ steal("can/map/validations", "can/compute", "can/test", function () { task.attr('age', 'bad'); task.attr('age', 'still bad'); }); + test('Validate undefined property', function () { + new can.Map().errors( "foo" ); + ok(true, "does not throw" ); + }); });