Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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);
        }