From 8322991c42e3fb22823126ed2aa021caf2f1c33a Mon Sep 17 00:00:00 2001 From: Austin Burdine Date: Sat, 11 Jul 2015 13:04:19 -0400 Subject: [PATCH] fixed some validation bugs refs #5520 - all errors (or just one if property is specified) are cleared before running the checks to make sure that old errors get cleared - fixed up validators to be slightly more sane as mutually exclusive tests aren't all being checked if one fails --- core/client/app/mixins/validation-engine.js | 16 +++++++--------- core/client/app/validators/reset.js | 8 +++----- core/client/app/validators/setting.js | 16 ++++++---------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/core/client/app/mixins/validation-engine.js b/core/client/app/mixins/validation-engine.js index 9e899cb139..3c4287588f 100644 --- a/core/client/app/mixins/validation-engine.js +++ b/core/client/app/mixins/validation-engine.js @@ -125,17 +125,15 @@ export default Ember.Mixin.create({ return reject(['The validator specified, "' + type + '", did not exist!']); } + if (opts.property) { + model.get('errors').remove(opts.property); + } else { + model.get('errors').clear(); + } + passed = validator.check(model, opts.property); - if (passed) { - if (opts.property) { - model.get('errors').remove(opts.property); - } else { - model.get('errors').clear(); - } - return resolve(); - } - return reject(); + return (passed) ? resolve() : reject(); }); }, diff --git a/core/client/app/validators/reset.js b/core/client/app/validators/reset.js index d2078d0867..b69cd856cd 100644 --- a/core/client/app/validators/reset.js +++ b/core/client/app/validators/reset.js @@ -5,14 +5,12 @@ var ResetValidator = BaseValidator.create({ var p1 = model.get('newPassword'), p2 = model.get('ne2Password'); - if (!validator.equals(p1, p2)) { - model.get('errors').add('ne2Password', 'The two new passwords don\'t match.'); - this.invalidate(); - } - if (!validator.isLength(p1, 8)) { model.get('errors').add('newPassword', 'The password is not long enough.'); this.invalidate(); + } else if (!validator.equals(p1, p2)) { + model.get('errors').add('ne2Password', 'The two new passwords don\'t match.'); + this.invalidate(); } } }); diff --git a/core/client/app/validators/setting.js b/core/client/app/validators/setting.js index 316605204f..b0795a5f1d 100644 --- a/core/client/app/validators/setting.js +++ b/core/client/app/validators/setting.js @@ -30,19 +30,15 @@ var SettingValidator = BaseValidator.create({ postsPerPage: function (model) { var postsPerPage = model.get('postsPerPage'); - if (postsPerPage > 1000) { - model.get('errors').add('postsPerPage', 'The maximum number of posts per page is 1000'); - this.invalidate(); - } - - if (postsPerPage < 1) { - model.get('errors').add('postsPerPage', 'The minimum number of posts per page is 1'); - this.invalidate(); - } - if (!validator.isInt(postsPerPage)) { model.get('errors').add('postsPerPage', 'Posts per page must be a number'); this.invalidate(); + } else if (postsPerPage > 1000) { + model.get('errors').add('postsPerPage', 'The maximum number of posts per page is 1000'); + this.invalidate(); + } else if (postsPerPage < 1) { + model.get('errors').add('postsPerPage', 'The minimum number of posts per page is 1'); + this.invalidate(); } } });