public void Format_Fallback() { var validator = new StubPropertyValidator(); _fallBackValidatorFormatterMock.Expect(mock => mock.Format(validator, _typeNameFormatter)).Return("FakeResult"); var result = _formatter.Format(validator, _typeNameFormatter); _fallBackValidatorFormatterMock.VerifyAllExpectations(); Assert.That(result, Is.EqualTo("FakeResult")); }
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)); }
public void Unless_TwoRulesWithSeveralValidatorsAreAdded_ConditionIsApplied() { var stubPropertyValidator1 = new StubPropertyValidator(); var stubPropertyValidator2 = new StubPropertyValidator(); var stubPropertyValidator3 = new StubPropertyValidator(); Assert.That(_customerValidationCollector.AddedPropertyRules.Count(), Is.EqualTo(0)); Assert.That(_customerValidationCollector.AddedPropertyMetaValidationRules.Count(), Is.EqualTo(0)); var customer1 = new Customer { FirstName = "Test" }; var customer2 = new Customer { FirstName = "NoTest" }; _customerValidationCollector.Unless( c => c.FirstName == "Test", () => { _customerValidationCollector.AddRule(_firstNameExpression).SetValidator(stubPropertyValidator1).SetValidator(stubPropertyValidator2); _customerValidationCollector.AddRule(_addressExpression).SetValidator(stubPropertyValidator3); }); Assert.That(_customerValidationCollector.AddedPropertyMetaValidationRules.Count(), Is.EqualTo(2)); var addedPropertyRules = _customerValidationCollector.AddedPropertyRules.ToArray(); Assert.That(addedPropertyRules.Count(), Is.EqualTo(2)); var propertyValidators = addedPropertyRules.SelectMany(pr => pr.Validators).ToArray(); Assert.That(propertyValidators.Count(), Is.EqualTo(3)); foreach (var propertyValidator in propertyValidators) { Assert.That(propertyValidator.GetType(), Is.EqualTo(typeof(DelegatingValidator))); var condition = (Func <object, bool>)PrivateInvoke.GetNonPublicField(propertyValidator, "condition"); Assert.That(condition(customer1), Is.False); Assert.That(condition(customer2), Is.True); } Assert.That(_customerValidationCollector.RemovedPropertyRules.Count(), Is.EqualTo(0)); }
public void SetUp() { _validatorRegistration1 = new ValidatorRegistration(typeof(NotEmptyValidator), null); _validatorRegistration2 = new ValidatorRegistration(typeof(NotEqualValidator), typeof(CustomerValidationCollector1)); _validatorRegistration3 = new ValidatorRegistration(typeof(NotNullValidator), null); _validatorRegistration4 = new ValidatorRegistration(typeof(LengthValidator), typeof(CustomerValidationCollector2)); _validatorRegistration5 = new ValidatorRegistration(typeof(NotEqualValidator), typeof(CustomerValidationCollector2)); _validatorRegistration6 = new ValidatorRegistration(typeof(LengthValidator), null); _removingPropertyRuleStub1 = MockRepository.GenerateStub <IRemovingComponentPropertyRule>(); _removingPropertyRuleStub1.Stub(stub => stub.Property).Return(PropertyInfoAdapter.Create(typeof(Customer).GetProperty("LastName"))); _removingPropertyRuleStub2 = MockRepository.GenerateStub <IRemovingComponentPropertyRule>(); _removingPropertyRuleStub2.Stub(stub => stub.Property).Return(PropertyInfoAdapter.Create(typeof(Customer).GetProperty("FirstName"))); _registrationWithContext1 = new ValidatorRegistrationWithContext(_validatorRegistration1, _removingPropertyRuleStub1); _registrationWithContext2 = new ValidatorRegistrationWithContext(_validatorRegistration2, _removingPropertyRuleStub1); _registrationWithContext3 = new ValidatorRegistrationWithContext(_validatorRegistration3, _removingPropertyRuleStub1); _registrationWithContext4 = new ValidatorRegistrationWithContext(_validatorRegistration4, _removingPropertyRuleStub1); _registrationWithContext5 = new ValidatorRegistrationWithContext(_validatorRegistration5, _removingPropertyRuleStub1); _registrationWithContext6 = new ValidatorRegistrationWithContext(_validatorRegistration1, _removingPropertyRuleStub1); _registrationWithContext7 = new ValidatorRegistrationWithContext(_validatorRegistration6, _removingPropertyRuleStub2); //other property -> filtered! _stubPropertyValidator1 = new StubPropertyValidator(); //not extracted _stubPropertyValidator2 = new NotEmptyValidator(null); //extracted _stubPropertyValidator3 = new NotEqualValidator("gfsf"); //extracted _stubPropertyValidator4 = new LengthValidator(0, 10); //not extracted _logContextMock = MockRepository.GenerateStrictMock <ILogContext>(); _extractor = new PropertyValidatorExtractor( new[] { _registrationWithContext1, _registrationWithContext2, _registrationWithContext3, _registrationWithContext4, _registrationWithContext5, _registrationWithContext6, _registrationWithContext7 }, _logContextMock); }
public void Merge_WithValidationCollectors() { var collector1 = new TypeWithoutBaseTypeCollector1(); var collector2 = new TypeWithoutBaseTypeCollector2(); var validationCollectorInfos = new[] { new[] { new ValidationCollectorInfo( collector1, typeof(ValidationAttributesBasedCollectorProvider)) }, new[] { new ValidationCollectorInfo(collector2, typeof(ApiBasedComponentValidationCollectorProvider)) } }; var userNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.UserName); var lastNameExpression = ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName); var stubValidator1 = new NotNullValidator(); var stubValidator2 = new NotEmptyValidator(null); var stubValidator3 = new NotEqualValidator("test"); var stubValidator4 = new StubPropertyValidator(); _validatorFormatterStub.Stub( stub => stub.Format(Arg <IPropertyValidator> .Matches(c => c.GetType() == typeof(NotNullValidator)), Arg <Func <Type, string> > .Is.Anything)) .Return("FluentValidation.Validators.NotNullValidator"); _validatorFormatterStub.Stub( stub => stub.Format(Arg <IPropertyValidator> .Matches(c => c.GetType() == typeof(LengthValidator)), Arg <Func <Type, string> > .Is.Anything)) .Return("FluentValidation.Validators.LengthValidator"); _validatorFormatterStub.Stub( stub => stub.Format(Arg <IPropertyValidator> .Matches(c => c.GetType() == typeof(NotEmptyValidator)), Arg <Func <Type, string> > .Is.Anything)) .Return("FluentValidation.Validators.NotEmptyValidator"); _validatorFormatterStub.Stub( stub => stub.Format(Arg <IPropertyValidator> .Matches(c => c.GetType() == typeof(NotEqualValidator)), Arg <Func <Type, string> > .Is.Anything)) .Return("FluentValidation.Validators.NotEqualValidator"); _validatorFormatterStub.Stub( stub => stub.Format(Arg <IPropertyValidator> .Matches(c => c.GetType() == typeof(StubPropertyValidator)), Arg <Func <Type, string> > .Is.Anything)) .Return("Remotion.Validation.UnitTests.TestHelpers.StubPropertyValidator"); var userNamePropertyRule = PropertyRule.Create(userNameExpression); userNamePropertyRule.AddValidator(stubValidator1); userNamePropertyRule.AddValidator(stubValidator1); userNamePropertyRule.AddValidator(stubValidator2); var lastNamePropertyRule = PropertyRule.Create(lastNameExpression); lastNamePropertyRule.AddValidator(stubValidator3); var noPropertyRuleStub = new ValidationRuleStub(); noPropertyRuleStub.AddValidator(stubValidator4); var removingPropertyRuleStub1 = MockRepository.GenerateStub <IRemovingComponentPropertyRule>(); removingPropertyRuleStub1.Stub(stub => stub.CollectorType).Return(typeof(CustomerValidationCollector1)); var removingPropertyRuleStub2 = MockRepository.GenerateStub <IRemovingComponentPropertyRule>(); removingPropertyRuleStub2.Stub(stub => stub.CollectorType).Return(typeof(CustomerValidationCollector2)); var logContextInfo1 = new LogContextInfo( stubValidator2, new[] { new ValidatorRegistrationWithContext(new ValidatorRegistration(typeof(NotEmptyValidator), null), removingPropertyRuleStub1), new ValidatorRegistrationWithContext(new ValidatorRegistration(typeof(NotEmptyValidator), null), removingPropertyRuleStub1), new ValidatorRegistrationWithContext(new ValidatorRegistration(typeof(NotEmptyValidator), null), removingPropertyRuleStub2) }); var logContextInfo2 = new LogContextInfo( stubValidator1, new[] { new ValidatorRegistrationWithContext(new ValidatorRegistration(typeof(NotNullValidator), null), removingPropertyRuleStub2) }); var logContextInfo3 = new LogContextInfo( stubValidator3, new[] { new ValidatorRegistrationWithContext(new ValidatorRegistration(typeof(NotEqualValidator), null), removingPropertyRuleStub1) }); _logContextStub.Stub(stub => stub.GetLogContextInfos(userNamePropertyRule)).Return(new[] { logContextInfo1, logContextInfo2 }); _logContextStub.Stub(stub => stub.GetLogContextInfos(lastNamePropertyRule)).Return(new[] { logContextInfo3 }); _logContextStub.Stub(stub => stub.GetLogContextInfos(noPropertyRuleStub)).Return(new LogContextInfo[0]); var fakeValidationRules = new IValidationRule[] { userNamePropertyRule, lastNamePropertyRule, noPropertyRuleStub }; _wrappedMergerStub.Stub( stub => stub.Merge( validationCollectorInfos)).Return(new ValidationCollectorMergeResult(fakeValidationRules, _logContextStub)); var expectedAfterMerge = "\r\nAFTER MERGE:" + "\r\n\r\n -> Remotion.Validation.UnitTests.TestDomain.Customer#UserName" + "\r\n VALIDATORS:" + "\r\n -> FluentValidation.Validators.NotNullValidator (x2)" + "\r\n -> FluentValidation.Validators.NotEmptyValidator (x1)" + "\r\n MERGE LOG:" + "\r\n -> 'FluentValidation.Validators.NotEmptyValidator' was removed from collectors 'CustomerValidationCollector1, CustomerValidationCollector2'" + "\r\n -> 'FluentValidation.Validators.NotNullValidator' was removed from collector 'CustomerValidationCollector2'" + "\r\n\r\n -> Remotion.Validation.UnitTests.TestDomain.Person#LastName" + "\r\n VALIDATORS:" + "\r\n -> FluentValidation.Validators.NotEqualValidator (x1)" + "\r\n MERGE LOG:" + "\r\n -> 'FluentValidation.Validators.NotEqualValidator' was removed from collector 'CustomerValidationCollector1'" + "\r\n\r\n -> Remotion.Validation.UnitTests.Implementation.ValidationRuleStub" + "\r\n VALIDATORS:" + "\r\n -> Remotion.Validation.UnitTests.TestHelpers.StubPropertyValidator (x1)"; CheckLoggingMethod(() => _diagnosticOutputRuleMergeDecorator.Merge(validationCollectorInfos), expectedAfterMerge, 0); var expectedBeforeMerge = "\r\nBEFORE MERGE:" + "\r\n\r\n-> Remotion.Validation.Providers.ValidationAttributesBasedCollectorProvider#Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseTypeCollector1" + "\r\n\r\n -> Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseType#Property1" + "\r\n ADDED HARD CONSTRAINT VALIDATORS:" + "\r\n -> FluentValidation.Validators.NotNullValidator (x1)" + "\r\n -> FluentValidation.Validators.NotEqualValidator (x1)" + "\r\n\r\n -> Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseType#Property2" + "\r\n ADDED SOFT CONSTRAINT VALIDATORS:" + "\r\n -> FluentValidation.Validators.LengthValidator (x1)" + "\r\n ADDED META VALIDATION RULES:" + "\r\n -> Remotion.Validation.UnitTests.TestDomain.ValidationRules.MaxLengthMetaValidationRule" + "\r\n\r\n-> Remotion.Validation.Providers.ApiBasedComponentValidationCollectorProvider#Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseTypeCollector2" + "\r\n\r\n -> Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseType#Property2" + "\r\n REMOVED VALIDATORS:" + "\r\n -> FluentValidation.Validators.NotEmptyValidator (x1)" + "\r\n -> FluentValidation.Validators.MaximumLengthValidator#Remotion.Validation.UnitTests.Implementation.TestDomain.TypeWithoutBaseTypeCollector1 (x1)"; CheckLoggingMethod(() => _diagnosticOutputRuleMergeDecorator.Merge(validationCollectorInfos), expectedBeforeMerge, 1); }