You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expected/desired behavior:
That I can run a custom rule using the Validation Controller
In stepping through the code, the rule loop variable is not getting set properly.
In the below, ruleSequece is an array and so getting the first element results in the rules variable being set to the string 'isPopulated' (the name of the rule, not the actual rule).
var rules = ruleSequence[sequence];
So later code tries to loop through what it thinks is an arrary, but is actually a string, and the first char of the string is 'i' and it is trying to process it as if it were a rule and error out.
StandardValidator.prototype.validateRuleSequence = function (object, propertyName, ruleSequence, sequence, results) {
var _this = this;
// are we validating all properties or a single property?
var validateAllProperties = propertyName === null || propertyName === undefined;
var rules = ruleSequence[sequence];
var allValid = true;
// validate each rule.
var promises = [];
var _loop_1 = function (i) {
var rule = rules[i];
// is the rule related to the property we're validating.
if (!validateAllProperties && rule.property.name !== propertyName) {
return "continue";
}
// is this a conditional rule? is the condition met?
if (rule.when && !rule.when(object)) {
return "continue";
}
// validate.
//Throws error here, on rule.property.name
var value = rule.property.name === null ? object : object[rule.property.name];
var promiseOrBoolean = rule.condition(value, object);
if (!(promiseOrBoolean instanceof Promise)) {
promiseOrBoolean = Promise.resolve(promiseOrBoolean);
}
promises.push(promiseOrBoolean.then(function (valid) {
var message = valid ? null : _this.getMessage(rule, object, value);
results.push(new validate_result_1.ValidateResult(rule, object, rule.property.name, valid, message));
allValid = allValid && valid;
return valid;
}));
};
for (var i = 0; i < rules.length; i++) {
_loop_1(i);
}
return Promise.all(promises)
.then(function () {
sequence++;
if (allValid && sequence < ruleSequence.length) {
return _this.validateRuleSequence(object, propertyName, ruleSequence, sequence, results);
}
return results;
});
};
The text was updated successfully, but these errors were encountered:
I'm submitting a bug report
1.3.2
Please tell us about your environment:
Operating System:
Windows 10
Browser:
all
Current behavior:
Running this code:
this.controller.validate({ object: this.user, rules: rules });
Results in this exception:
See it on Gist.Run :
https://gist.run/?id=a68bdf167a0a2b59f0e868268375692f
Expected/desired behavior:
That I can run a custom rule using the Validation Controller
In stepping through the code, the rule loop variable is not getting set properly.
In the below, ruleSequece is an array and so getting the first element results in the
rules
variable being set to the string 'isPopulated' (the name of the rule, not the actual rule).var rules = ruleSequence[sequence];
So later code tries to loop through what it thinks is an arrary, but is actually a string, and the first char of the string is 'i' and it is trying to process it as if it were a rule and error out.
The text was updated successfully, but these errors were encountered: