示例#1
0
        public void Create_MemberInfoIsNoPropertyInfo_ExceptionIsThrown()
        {
            var dummyExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.Dummy());

            Assert.Throws <InvalidOperationException> (
                () => AddingComponentPropertyRule.Create(dummyExpression, typeof(CustomerValidationCollector1)),
                "An 'AddingComponentPropertyRule' can only created for property members.");
        }
示例#2
0
        public void Create_PropertyDeclaredInBaseClass()
        {
            var componentPropertyRule = AddingComponentPropertyRule.Create(_lastNameExpression, typeof(RemovingComponentPropertyRuleTest));

            Assert.That(
                MemberInfoEqualityComparer <MemberInfo> .Instance.Equals(componentPropertyRule.Member, typeof(Customer).GetMember("LastName")[0]),
                Is.True);
            Assert.That(componentPropertyRule.PropertyName, Is.EqualTo("LastName"));
            Assert.That(componentPropertyRule.Expression, Is.SameAs(_lastNameExpression));
        }
示例#3
0
        public void Create_PropertyDeclaredInBaseClass()
        {
            var componentPropertyRule = AddingComponentPropertyRule.Create(_lastNameExpression, typeof(CustomerValidationCollector1));

            Assert.That(
                MemberInfoEqualityComparer <MemberInfo> .Instance.Equals(componentPropertyRule.Member, typeof(Customer).GetMember("LastName")[0]),
                Is.True);
            Assert.That(componentPropertyRule.PropertyName, Is.EqualTo("LastName"));
            Assert.That(componentPropertyRule.Member.DeclaringType, Is.EqualTo(typeof(Person)));
            Assert.That(componentPropertyRule.Member.ReflectedType, Is.EqualTo(typeof(Person)));
            //should always be of static type -> rules dictionary access!
            Assert.That(componentPropertyRule.Expression, Is.SameAs(_lastNameExpression));
        }
示例#4
0
        public void SetUp()
        {
            _property = PropertyInfoAdapter.Create(typeof(Customer).GetProperty("UserName"));

            _userNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.UserName);
            _lastNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName);

            _stubPropertyValidator1 = new StubPropertyValidator();
            _stubPropertyValidator2 = new NotEmptyValidator(null);
            _stubPropertyValidator3 = new NotEqualValidator("gfsf");

            _propertyValidatorExtractorMock = MockRepository.GenerateStrictMock <IPropertyValidatorExtractor>();

            _addingComponentPropertyRule = AddingComponentPropertyRule.Create(_userNameExpression, typeof(CustomerValidationCollector1));
        }
示例#5
0
        /// <inheritdoc />
        public IAddingComponentRuleBuilderOptions <TValidatedType, TProperty> AddRule <TProperty> (
            Expression <Func <TValidatedType, TProperty> > propertySelector)
        {
            ArgumentUtility.CheckNotNull("propertySelector", propertySelector);

            var componentPropertyRule = AddingComponentPropertyRule.Create(propertySelector, GetType());

            _addedPropertyRules.Add(componentPropertyRule);

            var metaValidationPropertyRule = AddingComponentPropertyMetaValidationRule.Create(propertySelector, GetType());

            _addedPropertyMetaValidationRules.Add(metaValidationPropertyRule);

            return(new AddingComponentRuleBuilder <TValidatedType, TProperty> (componentPropertyRule, metaValidationPropertyRule));
        }
示例#6
0
        private AddingComponentPropertyRule GetAddingPropertyRule(
            IAttributesBasedValidationPropertyRuleReflector propertyRuleReflector,
            Type validatedType,
            PropertyInfo propertyInfo,
            Func <object, object> propertyFunc,
            Type collectorType)
        {
            var propertyRule = new AddingComponentPropertyRule(validatedType, propertyInfo, propertyFunc, collectorType);

            foreach (var validator in propertyRuleReflector.GetAddingPropertyValidators())
            {
                propertyRule.RegisterValidator(validator);
            }

            return(propertyRule);
        }
        public void SetUp()
        {
            _notEmptyValidator      = new NotEmptyValidator(null);
            _notNullValidator       = new NotNullValidator();
            _notEqualValidator      = new NotEqualValidator("test");
            _maximumLengthValidator = new MaximumLengthValidator(30);
            _minimumLengthValidator = new MinimumLengthValidator(5);

            _componenValidationCollectorStub1 = MockRepository.GenerateStub <IComponentValidationCollector>();
            _componenValidationCollectorStub2 = MockRepository.GenerateStub <IComponentValidationCollector>();
            _componenValidationCollectorStub3 = MockRepository.GenerateStub <IComponentValidationCollector>();

            _firstNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.FirstName);
            _lastNameExpression  = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName);

            _addingPropertyRule1 = AddingComponentPropertyRule.Create(_firstNameExpression, _componenValidationCollectorStub1.GetType());
            _addingPropertyRule1.RegisterValidator(_notEmptyValidator);
            _addingPropertyRule1.RegisterValidator(_notNullValidator);
            _addingPropertyRule1.RegisterValidator(_notEqualValidator);

            _addingPropertyRule2 = AddingComponentPropertyRule.Create(_lastNameExpression, _componenValidationCollectorStub2.GetType());
            _addingPropertyRule2.RegisterValidator(_maximumLengthValidator);

            _addingPropertyRule3 = AddingComponentPropertyRule.Create(_lastNameExpression, _componenValidationCollectorStub2.GetType());
            _addingPropertyRule3.RegisterValidator(_minimumLengthValidator);

            _addingPropertyRule4 = AddingComponentPropertyRule.Create(_lastNameExpression, _componenValidationCollectorStub2.GetType());
            _addingPropertyRule4.RegisterValidator(_notNullValidator);

            _removingPropertyRule1 = RemovingComponentPropertyRule.Create(_firstNameExpression, typeof(CustomerValidationCollector1));
            _removingPropertyRule1.RegisterValidator(typeof(NotEmptyValidator));

            _removingPropertyRule2 = RemovingComponentPropertyRule.Create(_firstNameExpression, typeof(CustomerValidationCollector1));
            _removingPropertyRule2.RegisterValidator(typeof(NotNullValidator), _componenValidationCollectorStub1.GetType());

            _removingPropertyRule3 = RemovingComponentPropertyRule.Create(_firstNameExpression, typeof(CustomerValidationCollector1));
            _removingPropertyRule3.RegisterValidator(typeof(NotNullValidator), typeof(string)); //Unknow collector type!

            _removingPropertyRule4 = RemovingComponentPropertyRule.Create(_lastNameExpression, typeof(CustomerValidationCollector1));
            _removingPropertyRule4.RegisterValidator(typeof(MaximumLengthValidator));

            _propertyValidatorExtractorFactoryMock = MockRepository.GenerateStrictMock <IPropertyValidatorExtractorFactory>();
            _propertyValidatorExtractorMock        = MockRepository.GenerateStrictMock <IPropertyValidatorExtractor>();

            _merger = new OrderPrecedenceValidationCollectorMerger(_propertyValidatorExtractorFactoryMock);
        }
示例#8
0
        public void Validate()
        {
            var userNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.UserName);
            var lastNameExpression = ExpressionHelper.GetTypedMemberExpression <Person, string> (c => c.LastName);

            var propertyRule1        = AddingComponentPropertyRule.Create(userNameExpression, typeof(CustomerValidationCollector1));
            var propertyRule2        = AddingComponentPropertyRule.Create(lastNameExpression, typeof(CustomerValidationCollector1));
            var propertyRule3        = AddingComponentPropertyRule.Create(lastNameExpression, typeof(CustomerValidationCollector2));
            var filteredPropertyRule = MockRepository.GenerateStub <IValidationRule>();

            propertyRule1.AddValidator(_propertyValidatorStub1);
            propertyRule1.AddValidator(_propertyValidatorStub2);
            propertyRule2.AddValidator(_propertyValidatorStub3);
            propertyRule2.AddValidator(_propertyValidatorStub4);
            propertyRule3.AddValidator(_propertyValidatorStub5);

            var systemMetaValidationRuleMock1 = MockRepository.GenerateStrictMock <IMetaValidationRule>();
            var systemMetaValidationRuleMock2 = MockRepository.GenerateStrictMock <IMetaValidationRule>();

            _systemMetaRulesProviderFactoryStub.Stub(stub => stub.Create(Arg <IPropertyInformation> .Is.Anything)).Return(_systemMetaRulesProviderStub);
            _systemMetaRulesProviderStub.Stub(stub => stub.GetSystemMetaValidationRules())
            .Return(new[] { systemMetaValidationRuleMock1, systemMetaValidationRuleMock2 });

            var metaValidationRuleMock1 = MockRepository.GenerateStrictMock <IMetaValidationRule>();
            var metaValidationRuleMock2 = MockRepository.GenerateStrictMock <IMetaValidationRule>();
            var metaValidationRuleMock3 = MockRepository.GenerateStrictMock <IMetaValidationRule>();

            _propertyMetaValidationRuleStub1.Stub(stub => stub.Property).Return(PropertyInfoAdapter.Create((PropertyInfo)userNameExpression.GetMember()));
            _propertyMetaValidationRuleStub1.Stub(stub => stub.MetaValidationRules).Return(new[] { metaValidationRuleMock1, metaValidationRuleMock2 });

            _propertyMetaValidationRuleStub2.Stub(stub => stub.Property).Return(PropertyInfoAdapter.Create((PropertyInfo)lastNameExpression.GetMember()));
            _propertyMetaValidationRuleStub2.Stub(stub => stub.MetaValidationRules).Return(new[] { metaValidationRuleMock3 });

            _propertyMetaValidationRuleStub3.Stub(stub => stub.Property).Return(PropertyInfoAdapter.Create((PropertyInfo)lastNameExpression.GetMember()));
            _propertyMetaValidationRuleStub3.Stub(stub => stub.MetaValidationRules).Return(new IMetaValidationRule[0]);

            systemMetaValidationRuleMock1
            .Expect(
                mock => mock.Validate(Arg <IEnumerable <IPropertyValidator> > .List.Equal(new[] { _propertyValidatorStub1, _propertyValidatorStub2 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateInvalidResult("Error System Mock 1") });
            systemMetaValidationRuleMock2
            .Expect(
                mock => mock.Validate(Arg <IEnumerable <IPropertyValidator> > .List.Equal(new[] { _propertyValidatorStub1, _propertyValidatorStub2 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateValidResult() });
            metaValidationRuleMock1
            .Expect(
                mock => mock.Validate(Arg <IEnumerable <IPropertyValidator> > .List.Equal(new[] { _propertyValidatorStub1, _propertyValidatorStub2 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateValidResult() });
            metaValidationRuleMock2
            .Expect(
                mock => mock.Validate(Arg <IEnumerable <IPropertyValidator> > .List.Equal(new[] { _propertyValidatorStub1, _propertyValidatorStub2 })))
            .Return(
                new[]
                { MetaValidationRuleValidationResult.CreateValidResult(), MetaValidationRuleValidationResult.CreateInvalidResult("Error Mock 2") });

            systemMetaValidationRuleMock1
            .Expect(
                mock =>
                mock.Validate(
                    Arg <IEnumerable <IPropertyValidator> > .List.Equal(
                        new[] { _propertyValidatorStub3, _propertyValidatorStub4, _propertyValidatorStub5 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateValidResult() });
            systemMetaValidationRuleMock2
            .Expect(
                mock =>
                mock.Validate(
                    Arg <IEnumerable <IPropertyValidator> > .List.Equal(
                        new[] { _propertyValidatorStub3, _propertyValidatorStub4, _propertyValidatorStub5 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateValidResult() });
            metaValidationRuleMock3
            .Expect(
                mock =>
                mock.Validate(
                    Arg <IEnumerable <IPropertyValidator> > .List.Equal(
                        new[] { _propertyValidatorStub3, _propertyValidatorStub4, _propertyValidatorStub5 })))
            .Return(new[] { MetaValidationRuleValidationResult.CreateValidResult() });

            var result = _validator.Validate(new[] { propertyRule1, propertyRule2, filteredPropertyRule, propertyRule3 }).ToArray();

            systemMetaValidationRuleMock1.VerifyAllExpectations();
            systemMetaValidationRuleMock2.VerifyAllExpectations();
            metaValidationRuleMock1.VerifyAllExpectations();
            metaValidationRuleMock2.VerifyAllExpectations();
            metaValidationRuleMock3.VerifyAllExpectations();
            Assert.That(result.Count(), Is.EqualTo(8));
            Assert.That(result[0].IsValid, Is.False);
            Assert.That(result[1].IsValid, Is.True);
            Assert.That(result[2].IsValid, Is.True);
            Assert.That(result[3].IsValid, Is.True);
            Assert.That(result[4].IsValid, Is.False);
            Assert.That(result[5].IsValid, Is.True);
            Assert.That(result[6].IsValid, Is.True);
            Assert.That(result[7].IsValid, Is.True);
        }