public IValidationRule <T> For <TProp, TVal>(Expression <Func <T, TProp> > expression) where TVal : IValidator <TProp>, new() { var rule = new NestedValidationRule <T, TProp>(expression, () => new TVal()); AddRule(rule); return(rule); }
public IValidationRule <T> For <TProp>(Expression <Func <T, TProp> > expression, Func <IValidator <TProp> > validator) { var rule = new NestedValidationRule <T, TProp>(expression, validator); AddRule(rule); return(rule); }
public void RubberStamp_Rules_NestedValidationRule_AddValidatorForSubType_WithWhenCondition() { var adrValidator = new Validator <Address>(); adrValidator.AddRule(a => a.Street, con => con.IsNotNull()); adrValidator.AddRule(a => a.Zip, con => con.IsNotNull()); adrValidator.AddRule(a => a.City, con => con.IsNotNull()); var rule = new NestedValidationRule <Person, Address>(p => p.Address, () => adrValidator); var person = new Person(); Assert.Throws <ArgumentNullException>(() => rule.Validate(person)); }
public void RubberStamp_Rules_NestedValidationRule_AddValidatorForSubType_WithWhenCondition_InValid() { var adrValidator = new Validator <Address>(); adrValidator.AddRule(a => a.Street, con => con.IsNotNull()); adrValidator.AddRule(a => a.Zip, con => con.IsNotNull()); adrValidator.AddRule(a => a.City, con => con.IsNotNull()); var rule = new NestedValidationRule <Person, Address>(p => p.Address, () => adrValidator); var person = new Person { Address = new Address() }; var result = rule.Validate(person); Assert.That(result, Is.Not.Null); }
public void RubberStamp_Rules_NestedValidationRule_AddValidatorForSubType() { var adrValidator = new Validator <Address>(); adrValidator.AddRule(a => a.Street, con => con.IsNotNull()); adrValidator.AddRule(a => a.Zip, con => con.GreaterThan(0)); adrValidator.AddRule(a => a.City, con => con.IsNotNull()); var rule = new NestedValidationRule <Person, Address>(p => p.Address, () => adrValidator); var person = new Person { Address = new Address { Street = "test", Zip = 1, City = "test" } }; var result = rule.Validate(person); Assert.That(result, Is.Null); }