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