Ejemplo n.º 1
0
        public void DefaultErrorMessage_ScalePrecisionValidator()
        {
            var validator = new ScalePrecisionValidator(2, 5);

            Assert.That(validator.ErrorMessageSource, Is.TypeOf(typeof(LocalizedStringSource)));
            Assert.That(validator.ErrorMessageSource.GetString(), Is.EqualTo(Messages.scale_precision_error));
        }
Ejemplo n.º 2
0
        public void Given_CorrectValidator_When_Verifying_Then_ValidationPass()
        {
            // Arrange
            var scalePrecisionValidator = new ScalePrecisionValidator(1, 2);
            var verifier = new ScalePrecisionValidatorVerifier <ScalePrecisionValidator>(1, 2);

            // Act & Assert
            AssertExtension.NotThrows(() => verifier.Verify(scalePrecisionValidator));
        }
Ejemplo n.º 3
0
        public void Given_CorrectValidatorWithDifferentPrecisionValue_When_Verifying_Then_ValidationFail()
        {
            // Arrange
            var scalePrecisionValidator = new ScalePrecisionValidator(1, 3);
            var verifier = new ScalePrecisionValidatorVerifier <ScalePrecisionValidator>(1, 2);

            // Act & Assert
            AssertExtension.Throws <XunitException>(() => verifier.Verify(scalePrecisionValidator),
                                                    "(Precision property)");
        }
Ejemplo n.º 4
0
        private string FormatScalePrecisionValidator(ScalePrecisionValidator precisionValidator, string typeName)
        {
            var scalePrecisionValidator = precisionValidator;

            return(string.Format(
                       "{0} {{ Scale = '{1}', Precision = '{2}', IgnoreTrailingZeros = '{3}' }}",
                       typeName,
                       scalePrecisionValidator.Scale,
                       scalePrecisionValidator.Precision,
                       scalePrecisionValidator.IgnoreTrailingZeros));
        }
Ejemplo n.º 5
0
        public void Given_Composer_When_AddScalePrecisionValidatorVerifierNotGeneric_Then_CorrectRuleSet()
        {
            // Arrange
            var composer = BaseVerifiersSetComposer.Build();
            var scalePrecisionValidator = new ScalePrecisionValidator(1, 2);

            // Act
            var rules = composer.AddScalePrecisionValidatorVerifier(1, 2).Create();

            // Assert
            Assert.Equal(new[] { typeof(ScalePrecisionValidatorVerifier <ScalePrecisionValidator>) }, rules.Select(x => x.GetType()).ToArray());
            AssertExtension.NotThrows(() => rules[0].Verify(scalePrecisionValidator));
        }
Ejemplo n.º 6
0
        public void Given_CorrectValidatorWithIgnoreTrailingZeros_When_Verifying_Then_ValidationPass()
        {
            // Arrange
            var scalePrecisionValidator = new ScalePrecisionValidator(1, 2)
            {
                IgnoreTrailingZeros = true
            };
            var verifier =
                new ScalePrecisionValidatorVerifier <ScalePrecisionValidator>(1, 2)
            {
                IgnoreTrailingZeros = true
            };

            // Act & Assert
            AssertExtension.NotThrows(() => verifier.Verify(scalePrecisionValidator));
        }
Ejemplo n.º 7
0
        public void Given_CorrectValidatorWithDifferentIgnoreTrailingZerosValue_When_Verifying_Then_ValidationFail()
        {
            // Arrange
            var scalePrecisionValidator = new ScalePrecisionValidator(1, 2)
            {
                IgnoreTrailingZeros = true
            };
            var verifier =
                new ScalePrecisionValidatorVerifier <ScalePrecisionValidator>(1, 2)
            {
                IgnoreTrailingZeros = false
            };

            // Act & Assert
            AssertExtension.Throws <XunitException>(() => verifier.Verify(scalePrecisionValidator),
                                                    "(IgnoreTrailingZeros property)");
        }
Ejemplo n.º 8
0
        private void AddAttributeValidation()
        {
            var type = typeof(TModel);

            var ignoreAttrsAttr = type.GetTypeInfo().GetCustomAttributes(typeof(IgnoreValidationAttributesAttribute), true)
                                  .FirstOrDefault() as IgnoreValidationAttributesAttribute;
            var ignoreProps = ignoreAttrsAttr != null
                ? new HashSet <string>(ignoreAttrsAttr.Properties ?? new string[0])
                : new HashSet <string>();

            foreach (var prop in type.GetProperties().Where(o => !ignoreProps.Contains(o.Name)))
            {
                var attrs = prop.GetCustomAttributes(true);
                //Add validation from attributes
                foreach (var attr in attrs.OfType <ValidationAttribute>())
                {
                    IPropertyValidator propValidator = null;
                    #region NotNullAttribute

                    if (attr is NotNullAttribute)
                    {
                        propValidator = new NotNullValidator();
                    }

                    #endregion
                    #region EmailAttribute

                    if (attr is EmailAttribute)
                    {
                        propValidator = new EmailValidator();
                    }

                    #endregion
                    #region EnumAttribute

                    var enumAttr = attr as EnumAttribute;
                    if (enumAttr != null)
                    {
                        propValidator = new EnumValidator(enumAttr.Type);
                    }

                    #endregion
                    #region NotEmptyAttribute

                    var notEmptyAttr = attr as NotEmptyAttribute;
                    if (notEmptyAttr != null)
                    {
                        propValidator = new NotEmptyValidator(notEmptyAttr.DefaultValue ?? prop.PropertyType.GetDefaultValue());
                    }

                    #endregion
                    #region NotNullOrEmptyAttribute

                    var notNullOrEmptyAttr = attr as NotNullOrEmptyAttribute;
                    if (notNullOrEmptyAttr != null)
                    {
                        propValidator = new NotEmptyValidator(prop.PropertyType.GetDefaultValue());
                        AddAttributePropertyValidator(new NotNullValidator(), prop, attr.IncludePropertyName);
                    }

                    #endregion
                    #region EqualAttribute

                    AddComparisonValidator(attr as EqualAttribute, type, prop,
                                           o => new EqualValidator(o),
                                           (func, info) => new EqualValidator(func, info));

                    #endregion
                    #region LengthAttribute

                    var lengthAttr = attr as LengthAttribute;
                    if (lengthAttr != null)
                    {
                        propValidator = new LengthValidator(lengthAttr.Min, lengthAttr.Max);
                    }

                    #endregion
                    #region NotEqualAttribute

                    AddComparisonValidator(attr as NotEqualAttribute, type, prop,
                                           o => new NotEqualValidator(o),
                                           (func, info) => new NotEqualValidator(func, info));

                    #endregion
                    #region RegularExpressionAttribute

                    var regexAttr = attr as RegularExpressionAttribute;
                    if (regexAttr != null)
                    {
                        propValidator = new RegularExpressionValidator(regexAttr.Expression, regexAttr.RegexOptions);
                    }

                    #endregion
                    #region CreditCardAttribute

                    if (attr is CreditCardAttribute)
                    {
                        propValidator = new CreditCardValidator();
                    }

                    #endregion
                    #region ScalePrecisionAttribute

                    var scalePrecisionAttr = attr as ScalePrecisionAttribute;
                    if (scalePrecisionAttr != null)
                    {
                        propValidator = new ScalePrecisionValidator(scalePrecisionAttr.Scale, scalePrecisionAttr.Precision);
                    }

                    #endregion
                    #region ExactLengthAttribute

                    var exctLenAttr = attr as ExactLengthAttribute;
                    if (exctLenAttr != null)
                    {
                        propValidator = new ExactLengthValidator(exctLenAttr.Length);
                    }

                    #endregion
                    #region ExclusiveBetweenAttribute

                    var exclusiveBetweenAttribute = attr as ExclusiveBetweenAttribute;
                    if (exclusiveBetweenAttribute != null)
                    {
                        if (exclusiveBetweenAttribute.From != null && exclusiveBetweenAttribute.To != null &&
                            exclusiveBetweenAttribute.From.GetType() != exclusiveBetweenAttribute.To.GetType())
                        {
                            var fromConverted = Convert.ChangeType(exclusiveBetweenAttribute.From, exclusiveBetweenAttribute.To.GetType());

                            propValidator = new ExclusiveBetweenValidator(fromConverted as IComparable, exclusiveBetweenAttribute.To as IComparable);
                        }
                        else
                        {
                            propValidator = new ExclusiveBetweenValidator(exclusiveBetweenAttribute.From as IComparable, exclusiveBetweenAttribute.To as IComparable);
                        }
                    }

                    #endregion
                    #region ExclusiveBetweenAttribute

                    var inclusiveBetweenAttribute = attr as InclusiveBetweenAttribute;
                    if (inclusiveBetweenAttribute != null)
                    {
                        if (inclusiveBetweenAttribute.From != null && inclusiveBetweenAttribute.To != null &&
                            inclusiveBetweenAttribute.From.GetType() != inclusiveBetweenAttribute.To.GetType())
                        {
                            var fromConverted = Convert.ChangeType(inclusiveBetweenAttribute.From, inclusiveBetweenAttribute.To.GetType());

                            propValidator = new InclusiveBetweenValidator(fromConverted as IComparable, inclusiveBetweenAttribute.To as IComparable);
                        }
                        else
                        {
                            propValidator = new InclusiveBetweenValidator(inclusiveBetweenAttribute.From as IComparable, inclusiveBetweenAttribute.To as IComparable);
                        }
                    }

                    #endregion
                    #region GreaterThanAttribute

                    AddComparisonValidator(attr as GreaterThanAttribute, type, prop,
                                           o => new GreaterThanValidator(o as IComparable),
                                           (func, info) => new GreaterThanValidator(func, info));

                    #endregion
                    #region GreaterThanOrEqualAttribute

                    AddComparisonValidator(attr as GreaterThanOrEqualAttribute, type, prop,
                                           o => new GreaterThanOrEqualValidator(o as IComparable),
                                           (func, info) => new GreaterThanOrEqualValidator(func, info));

                    #endregion
                    #region LessThanOrEqualAttribute

                    AddComparisonValidator(attr as LessThanOrEqualAttribute, type, prop,
                                           o => new LessThanOrEqualValidator(o as IComparable),
                                           (func, info) => new LessThanOrEqualValidator(func, info));

                    #endregion
                    #region LessThanAttribute

                    AddComparisonValidator(attr as LessThanAttribute, type, prop,
                                           o => new LessThanValidator(o as IComparable),
                                           (func, info) => new LessThanValidator(func, info));

                    #endregion

                    if (propValidator == null)
                    {
                        continue;
                    }

                    AddAttributePropertyValidator(propValidator, prop, attr.IncludePropertyName);
                }
            }
        }