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."); }
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)); }
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)); }
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)); }
/// <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)); }
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); }
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); }