示例#1
0
        public void DefaultErrorMessage_NotEqualValidator()
        {
            var validator = new NotEqualValidator(null);

            Assert.That(validator.ErrorMessageSource, Is.TypeOf(typeof(LocalizedStringSource)));
            Assert.That(validator.ErrorMessageSource.GetString(), Is.EqualTo(Messages.notequal_error));
        }
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            if (!ShouldGenerateClientSideRules())
            {
                yield break;
            }

            string comparisonValuePlaceHolder = "ComparisonValue";

            // Convert validator
            NotEqualValidator notEqualValidator = (NotEqualValidator)Validator;

            // Initialize client rule
            ModelClientValidationRule rule = new ModelClientValidationRule();

            rule.ValidationType = "notequal";

            MessageFormatter formatter = new MessageFormatter()
                                         .AppendPropertyName(Metadata.DisplayName ?? Rule.PropertyName);

            if (notEqualValidator.MemberToCompare != null)
            {
                // Append comparision member to message
                formatter.AppendArgument(
                    comparisonValuePlaceHolder,
                    notEqualValidator.MemberToCompare.GetDisplayName());

                // Append '*.' to the name of field for prefix merging
                rule.ValidationParameters["field"] = string.Format("*.{0}",
                                                                   notEqualValidator.MemberToCompare.Name);
            }
            else if (notEqualValidator.ValueToCompare != null)
            {
                string valueToCompare = null;

                if (notEqualValidator.ValueToCompare is DateTime)
                {
                    // If value is of type DateTime convert it to DateTime
                    // and format as yyyy-MM-dd to be able to parse it at client side
                    // easily using jQuery.
                    DateTime dateValueToCompare = (DateTime)notEqualValidator.ValueToCompare;
                    valueToCompare = dateValueToCompare.ToString("yyyy-MM-dd");
                }
                else
                {
                    valueToCompare = notEqualValidator.ValueToCompare.ToString();
                }

                // Append comparision value to message
                formatter.AppendArgument(comparisonValuePlaceHolder, valueToCompare);
                // Set value to compare
                rule.ValidationParameters["value"] = valueToCompare;
            }

            // Set error message of rule
            rule.ErrorMessage = formatter.BuildMessage(Validator.ErrorMessageSource.GetString(null));

            yield return(rule);
        }
        public void Should_create_notequaladapter_for_notequalvalidator()
        {
            // Given
            var validator = new NotEqualValidator(1);

            // When
            var result = factory.Create(this.rule, validator);

            // Then
            result.ShouldBeOfType <NotEqualAdapter>();
        }
示例#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));
        }
        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 Format_IComparisonValidators()
        {
            var validator1 = new EqualValidator(5);
            var validator2 = new NotEqualValidator(10);
            var validator3 = new GreaterThanValidator(8);
            var validator4 = new GreaterThanOrEqualValidator(7);
            var validator5 = new LessThanValidator(2);
            var validator6 = new LessThanOrEqualValidator(1);
            var validator7 = new EqualValidator(o => o, typeof(Customer).GetProperty("UserName"));

            Assert.That(_formatter.Format(validator1, _typeNameFormatter), Is.EqualTo("EqualValidator { ValueToCompare = '5' }"));
            Assert.That(_formatter.Format(validator2, _typeNameFormatter), Is.EqualTo("NotEqualValidator { ValueToCompare = '10' }"));
            Assert.That(_formatter.Format(validator3, _typeNameFormatter), Is.EqualTo("GreaterThanValidator { ValueToCompare = '8' }"));
            Assert.That(_formatter.Format(validator4, _typeNameFormatter), Is.EqualTo("GreaterThanOrEqualValidator { ValueToCompare = '7' }"));
            Assert.That(_formatter.Format(validator5, _typeNameFormatter), Is.EqualTo("LessThanValidator { ValueToCompare = '2' }"));
            Assert.That(_formatter.Format(validator6, _typeNameFormatter), Is.EqualTo("LessThanOrEqualValidator { ValueToCompare = '1' }"));
            Assert.That(_formatter.Format(validator7, _typeNameFormatter), Is.EqualTo("EqualValidator { MemberToCompare = 'Customer.UserName\r\n' }"));
        }
示例#7
0
        public void SetUp()
        {
            _defaultMessageEvaluatorMock       = MockRepository.GenerateStrictMock <IDefaultMessageEvaluator>();
            _validatorGlobalizationServiceMock = MockRepository.GenerateStrictMock <IErrorMessageGlobalizationService>();

            _validator1          = new NotNullValidator();
            _errorMessageSource1 = _validator1.ErrorMessageSource;
            _validator2          = new NotEmptyValidator(null);
            _errorMessageSource2 = _validator2.ErrorMessageSource;
            _validator3          = new NotEqualValidator("test");
            _errorMessageSource3 = _validator3.ErrorMessageSource;

            _propertyRule = PropertyRule.Create(ExpressionHelper.GetTypedMemberExpression <Customer, string> (c => c.LastName));
            _propertyRule.AddValidator(_validator1);
            _propertyRule.AddValidator(_validator2);
            _propertyRule.AddValidator(_validator3);

            _service = new ValidationRuleGlobalizationService(_defaultMessageEvaluatorMock, _validatorGlobalizationServiceMock);
        }
        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);
        }
示例#9
0
        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);
        }
        public void Should_create_notequaladapter_for_notequalvalidator()
        {
            // Given
            var validator = new NotEqualValidator(1);

            // When
            var result = factory.Create(this.rule, validator);

            // Then
            result.ShouldBeOfType<NotEqualAdapter>();
        }