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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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));
        }