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