public void ReturnsSuccessIfAllValidatorsReturnSuccess() { MockValidator<string> subValidator1 = new MockValidator<string>(false, "validator1"); MockValidator<string> subValidator2 = new MockValidator<string>(false, "validator2"); MockValidator<string> subValidator3 = new MockValidator<string>(false, "validator3"); Validator validator = new AndCompositeValidator(subValidator1, subValidator2, subValidator3); string target = new string('a', 10); // just any string, but a new one ValidationResults validationResults = validator.Validate(target); Assert.IsTrue(validationResults.IsValid); Assert.AreSame(target, subValidator1.ValidatedTargets[0]); Assert.AreSame(target, subValidator2.ValidatedTargets[0]); Assert.AreSame(target, subValidator3.ValidatedTargets[0]); }
public void ReturnsFailureAfterQueryingAllValidatorsIfOneValidatorReturnFailure() { MockValidator<string> subValidator1 = new MockValidator<string>(false, "validator1"); MockValidator<string> subValidator2 = new MockValidator<string>(true, "validator2"); MockValidator<string> subValidator3 = new MockValidator<string>(false, "validator3"); Validator validator = new AndCompositeValidator(subValidator1, subValidator2, subValidator3); string target = new string('a', 10); // just any string, but a new one ValidationResults validationResults = validator.Validate(target); Assert.IsFalse(validationResults.IsValid); IList<ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults); Assert.AreEqual(1, resultsList.Count); Assert.AreEqual("validator2", resultsList[0].Message); Assert.AreSame(target, subValidator1.ValidatedTargets[0]); Assert.AreSame(target, subValidator2.ValidatedTargets[0]); Assert.AreSame(target, subValidator3.ValidatedTargets[0]); }
/// <summary> /// Creates the composite validator built by the builder. /// </summary> protected virtual Validator DoGetValidator() { // create the appropriate validator Validator validator; if (this.valueValidators.Count == 1) { validator = this.valueValidators[0]; } else { if (CompositionType.And == this.validatedElement.CompositionType) { validator = new AndCompositeValidator(this.valueValidators.ToArray()); } else { validator = new OrCompositeValidator(this.valueValidators.ToArray()); validator.MessageTemplate = this.validatedElement.CompositionMessageTemplate; validator.Tag = this.validatedElement.CompositionTag; } } // add support for ignoring nulls Validator valueValidator; if (this.validatedElement.IgnoreNulls) { valueValidator = new NullIgnoringValidatorWrapper(validator); } else { valueValidator = validator; } return valueValidator; }
public void ReturnsCompositeFailureWhenValidatingNullAfterQueryingAllValidatorsIfManyValidatorsReturnFailure() { MockValidator<string> subValidator1 = new MockValidator<string>(false, "validator1"); MockValidator<string> subValidator2 = new MockValidator<string>(true, "validator2"); MockValidator<string> subValidator3 = new MockValidator<string>(true, "validator3"); Validator validator = new AndCompositeValidator(subValidator1, subValidator2, subValidator3); string target = null; ValidationResults validationResults = validator.Validate(target); Assert.IsFalse(validationResults.IsValid); IList<ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults); Assert.AreEqual(2, resultsList.Count); Assert.AreEqual("validator2", resultsList[0].Message); Assert.AreEqual("validator3", resultsList[1].Message); Assert.AreSame(target, subValidator1.ValidatedTargets[0]); Assert.AreSame(target, subValidator2.ValidatedTargets[0]); Assert.AreSame(target, subValidator3.ValidatedTargets[0]); }
public void ValidationRequestWithNullSuppliedValidationResultsThrows() { Validator validator = new AndCompositeValidator(); string target = new string('a', 10); // just any string, but a new one validator.Validate(target, null); }
public void CanPerformValidationWithSuppliedValidationResults() { MockValidator<string> subValidator1 = new MockValidator<string>(false, "validator1"); MockValidator<string> subValidator2 = new MockValidator<string>(true, "validator2"); MockValidator<string> subValidator3 = new MockValidator<string>(false, "validator3"); Validator validator = new AndCompositeValidator(subValidator1, subValidator2, subValidator3); string target = new string('a', 10); // just any string, but a new one ValidationResults validationResults = new ValidationResults(); validator.Validate(target, validationResults); Assert.IsFalse(validationResults.IsValid); IList<ValidationResult> resultsList = ValidationTestHelper.GetResultsList(validationResults); Assert.AreEqual(1, resultsList.Count); Assert.AreEqual("validator2", resultsList[0].Message); Assert.AreSame(target, subValidator1.ValidatedTargets[0]); Assert.AreSame(target, subValidator2.ValidatedTargets[0]); Assert.AreSame(target, subValidator3.ValidatedTargets[0]); }
/// <summary> /// Creates the composite validator built by the builder. /// </summary> protected virtual Validator DoGetValidator() { // create appropriate composite validator Validator compositeValidator; if (CompositionType.And == this.validatedElement.CompositionType) { compositeValidator = new AndCompositeValidator(this.valueValidators.ToArray()); } else { compositeValidator = new OrCompositeValidator(this.valueValidators.ToArray()); compositeValidator.MessageTemplate = this.validatedElement.CompositionMessageTemplate; compositeValidator.Tag = this.validatedElement.CompositionTag; } // add support for ignoring nulls Validator valueValidator; if (this.validatedElement.IgnoreNulls) { valueValidator = new OrCompositeValidator(new NotNullValidator(true), compositeValidator); valueValidator.MessageTemplate = this.validatedElement.IgnoreNullsMessageTemplate != null ? this.validatedElement.IgnoreNullsMessageTemplate : Resources.IgnoreNullsDefaultMessageTemplate; valueValidator.Tag = this.validatedElement.IgnoreNullsTag; } else { valueValidator = compositeValidator; } return valueValidator; }
/// <summary> /// Recursively set the tag value on the wrapped repeaters. /// </summary> /// <param name="validator">The validator container.</param> /// <param name="tag">The tag value to set.</param> private void SetTag(AndCompositeValidator validator, string tag) { foreach (Validator child in validator.Validators) { child.Tag = tag; AndCompositeValidator andCompositeValidator = child as AndCompositeValidator; if (andCompositeValidator != null) { this.SetTag(andCompositeValidator, tag); } } }