public void GetClientValidationRules_WithMinAndMaxLength_ReturnsValidationParameters() { // Arrange var provider = new DataAnnotationsModelMetadataProvider(); var metadata = provider.GetMetadataForProperty(() => null, typeof(string), "Length"); var attribute = new StringLengthAttribute(10) { MinimumLength = 3 }; var adapter = new StringLengthAttributeAdapter(attribute); var context = new ClientModelValidationContext(metadata, provider); // Act var rules = adapter.GetClientValidationRules(context); // Assert var rule = Assert.Single(rules); Assert.Equal("length", rule.ValidationType); Assert.Equal(2, rule.ValidationParameters.Count); Assert.Equal(3, rule.ValidationParameters["min"]); Assert.Equal(10, rule.ValidationParameters["max"]); Assert.Equal("The field Length must be a string with a minimum length of 3 and a maximum length of 10.", rule.ErrorMessage); }
public void GetClientValidationRules_WithMaxLength_ReturnsValidationParameters() { // Arrange var provider = new DataAnnotationsModelMetadataProvider(); var metadata = provider.GetMetadataForProperty(() => null, typeof(string), "Length"); var attribute = new StringLengthAttribute(8); var adapter = new StringLengthAttributeAdapter(attribute); var context = new ClientModelValidationContext(metadata, provider); // Act var rules = adapter.GetClientValidationRules(context); // Assert var rule = Assert.Single(rules); Assert.Equal("length", rule.ValidationType); Assert.Equal(1, rule.ValidationParameters.Count); Assert.Equal(8, rule.ValidationParameters["max"]); Assert.Equal(attribute.FormatErrorMessage("Length"), rule.ErrorMessage); }
/// <summary> /// Creates an <see cref="IAttributeAdapter"/> for the given attribute. /// </summary> /// <param name="attribute">The attribute to create an adapter for.</param> /// <param name="stringLocalizer">The localizer to provide to the adapter.</param> /// <returns>An <see cref="IAttributeAdapter"/> for the given attribute.</returns> public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } IAttributeAdapter adapter; var type = attribute.GetType(); if (type == typeof(RegularExpressionAttribute)) { adapter = new RegularExpressionAttributeAdapter((RegularExpressionAttribute)attribute, stringLocalizer); } else if (type == typeof(MaxLengthAttribute)) { adapter = new MaxLengthAttributeAdapter((MaxLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RequiredAttribute)) { adapter = new RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (type == typeof(CompareAttribute)) { adapter = new CompareAttributeAdapter((CompareAttribute)attribute, stringLocalizer); } else if (type == typeof(MinLengthAttribute)) { adapter = new MinLengthAttributeAdapter((MinLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(CreditCardAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "creditcard", stringLocalizer); } else if (type == typeof(StringLengthAttribute)) { adapter = new StringLengthAttributeAdapter((StringLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RangeAttribute)) { adapter = new RangeAttributeAdapter((RangeAttribute)attribute, stringLocalizer); } else if (type == typeof(EmailAddressAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "email", stringLocalizer); } else if (type == typeof(PhoneAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "phone", stringLocalizer); } else if (type == typeof(UrlAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "url", stringLocalizer); } else { adapter = null; } return(adapter); }