This validator will be valid only when all of the validators in the Validators collection are valid.
Validators
ValidationErrors property will return a union of all validation error messages for the contained validators.
ValidationErrors
public void WhenAllValidatorsReturnTrue() { ValidatorGroup vg = new ValidatorGroup("true"); vg.Validators.Add(new TrueValidator()); vg.Validators.Add(new TrueValidator()); vg.Validators.Add(new TrueValidator()); IValidationErrors errors = new ValidationErrors(); errors.AddError("existingErrors", new ErrorMessage("error", null)); bool valid = vg.Validate(new object(), errors); Assert.IsTrue(valid, "Validation should succeed when all inner validators return true."); Assert.AreEqual(0, errors.GetErrors("errors").Count); Assert.AreEqual(1, errors.GetErrors("existingErrors").Count); }
public void WhenAllValidatorsReturnFalse() { ValidatorGroup vg = new ValidatorGroup(); vg.Validators.Add(new FalseValidator()); vg.Validators.Add(new FalseValidator()); vg.Validators.Add(new FalseValidator()); IValidationErrors errors = new ValidationErrors(); errors.AddError("existingErrors", new ErrorMessage("error", null)); bool valid = vg.Validate(new object(), errors); Assert.IsFalse(valid, "Validation should fail when all inner validators return false."); Assert.AreEqual(3, errors.GetErrors("errors").Count); Assert.AreEqual(1, errors.GetErrors("existingErrors").Count); }
public void TestNestingCollectionValidatorWithXMLDescription() { const string xml = @"<?xml version='1.0' encoding='UTF-8' ?> <objects xmlns='http://www.springframework.net' xmlns:v='http://www.springframework.net/validation'> <v:group id='validatePerson' when='T(Spring.Objects.TestObject) == #this.GetType()'> <v:required id ='req' when='true' test='Name'/> <v:regex id ='reg' test='Name'> <v:property name='Expression' value='[a-z]*\s[a-z]*'/> <v:property name='Options' value='IgnoreCase'/> <v:message id='reg1' providers='regExpr' when='true'> <v:param value='#this.ToString()'/> </v:message> </v:regex> </v:group> <v:group id='validator'> <v:collection id='collectionValidator' validate-all='true' context='Members' include-element-errors='true'> <v:message id='coll1' providers='membersCollection' when='true'> <v:param value='#this.ToString()'/> </v:message> <v:ref name='validatePerson'/> </v:collection> </v:group> </objects>"; MemoryStream stream = new MemoryStream(new UTF8Encoding().GetBytes(xml)); IResource resource = new InputStreamResource(stream, "collection validator test"); XmlObjectFactory objectFactory = new XmlObjectFactory(resource, null); ValidatorGroup validator = (ValidatorGroup)objectFactory.GetObject("validator"); Society soc = new Society(); soc.Members.Add(new TestObject("Damjan Tomic", 24)); soc.Members.Add(new TestObject("Goran Milosavljevic", 24)); soc.Members.Add(new TestObject("Ivan Cikic", 28)); IValidationErrors err1 = new ValidationErrors(); Assert.IsTrue(validator.Validate(soc, err1)); soc.Members.Add(new TestObject("foo", 30)); soc.Members.Add(new TestObject("bar", 30)); Assert.IsFalse(validator.Validate(soc, err1)); }
public void WhenSingleValidatorReturnsTrue() { ValidatorGroup vg = new ValidatorGroup(Expression.Parse("true")); vg.Validators.Add(new FalseValidator()); vg.Validators.Add(new TrueValidator()); vg.Validators.Add(new FalseValidator()); IValidationErrors errors = new ValidationErrors(); errors.AddError("existingErrors", new ErrorMessage("error", null)); bool valid = vg.Validate(new object(), errors); Assert.IsFalse(valid, "Validation should fail when single inner validator returns true."); Assert.AreEqual(2, errors.GetErrors("errors").Count); Assert.AreEqual(1, errors.GetErrors("existingErrors").Count); }
public void WhenGroupIsNotValidatedBecauseWhenExpressionReturnsFalse() { ValidatorGroup vg = new ValidatorGroup("false"); IList validators = new ArrayList(); validators.Add(new FalseValidator()); validators.Add(new FalseValidator()); vg.Validators = validators; IValidationErrors errors = new ValidationErrors(); errors.AddError("existingErrors", new ErrorMessage("error", null)); bool valid = vg.Validate(new object(), errors); Assert.IsTrue(valid, "Validation should succeed when group validator is not evaluated."); Assert.AreEqual(0, errors.GetErrors("errors").Count); Assert.AreEqual(1, errors.GetErrors("existingErrors").Count); }