public void CorrectlyReturnsValidResults(int minLength, int maxLength, object objectToValidate) { // Arrange sut = new StringLengthAttribute(minLength, maxLength); // Act var validationResult = sut.IsValid(objectToValidate, null); // Assert Assert.Equal(ValidationResult.Success, validationResult); }
public void CorrectlyReturnsInValidResults(int minLength, int maxLength, object objectToValidate) { // Arrange sut = new StringLengthAttribute(minLength, maxLength); // Act var validationResult = sut.IsValid(objectToValidate, ValidationContextFactory.Create()); // Assert Assert.NotEqual(ValidationResult.Success, validationResult); Assert.Contains("The field", validationResult.ErrorMessage); Assert.Contains("is invalid.", validationResult.ErrorMessage); }
/// <summary> /// Public method for object validation /// </summary> /// <param name="obj">Object needed to be validated</param> /// <returns><see cref="ValidationResult"/> object that represent the result of validation</returns> /// <exception cref="ValidationModel">Throws when <param name="value"></param> is equal to null</exception> public List <ValidationModel> Validate(T obj) { List <ValidationModel> errors = new List <ValidationModel>(); IList <PropertyInfo> properties = obj.GetType().GetProperties ( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static ); foreach (PropertyInfo property in properties) { IList <Attribute> attributes = property.GetCustomAttributes().ToList(); foreach (Attribute attribute in attributes) { IValidationAttribute customAttribute = attribute as IValidationAttribute; if (customAttribute != null) { ValidationModel result = customAttribute.IsValid(property.GetValue(obj)); if (result.ValidationResult != ValidationResult.Success) { errors.Add(new ValidationModel( result.ValidationResult, result.ErrorMessage )); _logger.Warn(result.ErrorMessage); } } } } return(errors); }