public void RubberStamp_Rules_EnumeratedValidationRule_AddValidatorForSubType_Invalid() { 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 EnumeratedValidationRule <Person, Address>(p => p.Addresses, () => adrValidator); var person = new Person { Addresses = new List <Address> { new Address { Zip = 1, City = "test" } } }; var result = rule.Validate(person); Assert.That(result, Is.Not.Null); }
/// <summary> /// Loops over a nested collection and validates all objects of the collection /// </summary> /// <typeparam name="TProp">The type of object in the collection</typeparam> /// <typeparam name="TVal">The type of validator to apply</typeparam> /// <param name="expression">The collection to loop over</param> /// <returns>The validation rule</returns> public IValidationRule <T> ForEach <TProp, TVal>(Expression <Func <T, IEnumerable <TProp> > > expression) where TVal : IValidator <TProp>, new() { var rule = new EnumeratedValidationRule <T, TProp>(expression, () => new TVal()); AddRule(rule); return(rule); }
/// <summary> /// Loops over a nested collection and validates all objects of the collection /// </summary> /// <typeparam name="TProp">The type of object in the collection</typeparam> /// <param name="expression">The collection to loop over</param> /// <param name="validator">The validator to use</param> /// <returns>The validation rule</returns> public IValidationRule <T> ForEach <TProp>(Expression <Func <T, IEnumerable <TProp> > > expression, Func <IValidator <TProp> > validator) { var rule = new EnumeratedValidationRule <T, TProp>(expression, validator); AddRule(rule); return(rule); }
public void RubberStamp_Rules_EnumeratedValidationRule_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 EnumeratedValidationRule <Person, Address>(p => p.Addresses, () => adrValidator); var person = new Person(); Assert.Throws <ArgumentNullException>(() => rule.Validate(person)); }