Ejemplo n.º 1
0
        private void AddValidationRule(string ruleSetName, IEntityValidationRule <TEntity> entityValidationRule)
        {
            if (ruleSetName == null)
            {
                throw new ArgumentNullException("ruleSetName");
            }

            if (entityValidationRule == null)
            {
                throw new ArgumentNullException("entityValidationRule");
            }

            IList <IEntityValidationRule <TEntity> > entityValidationRules;

            if (m_EntityValidationRules.TryGetValue(ruleSetName, out entityValidationRules))
            {
                entityValidationRules.Add(entityValidationRule);
            }
            else
            {
                m_EntityValidationRules.Add(ruleSetName, new List <IEntityValidationRule <TEntity> > {
                    entityValidationRule
                });
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="EqualToLaboValidationPropertyValidatorAdapter"/> class.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <param name="validationTransformerManager">The validation transformer manager.</param>
        public EqualToLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule, IValidationTransformerManager validationTransformerManager = null)
            : base(metadata, controllerContext, validationRule)
        {
            ShouldValidate = false;

            m_ValidationTransformerManager = validationTransformerManager;
        }
        public void ValidationRules()
        {
            EntityValidatorBase <string>   entityValidatorBase  = Substitute.ForPartsOf <EntityValidatorBase <string> >();
            IEntityValidationRule <string> entityValidationRule = Substitute.For <IEntityValidationRule <string> >();

            entityValidatorBase.AddRule(entityValidationRule);

            Assert.AreSame(entityValidationRule, entityValidatorBase.ValidationRules.Single());
        }
Ejemplo n.º 4
0
        /// <summary>
        /// When implemented in a derived class, returns metadata for client validation.
        /// </summary>
        /// <returns>
        /// The metadata for client validation.
        /// </returns>
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            IEntityValidationRule    entityValidationRule    = ValidationRule;
            IEntityPropertyValidator entityPropertyValidator = entityValidationRule.Validator;
            ValidatorProperties      validatorProperties     = entityPropertyValidator.GetValidatorProperties();
            string message = entityValidationRule.GetValidationMessage(Metadata.Model);

            yield return(new ModelClientValidationRegexRule(message, validatorProperties.GetPropertyValue <string>(Constants.ValidationMessageParameterNames.REGEX)));
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Adds the entity validation rule to the entity validator.
        /// </summary>
        /// <param name="entityValidationRule">The entity validation rule.</param>
        /// <exception cref="System.ArgumentNullException">entityValidationRule</exception>
        public void AddRule(IEntityValidationRule <TEntity> entityValidationRule)
        {
            if (entityValidationRule == null)
            {
                throw new ArgumentNullException("entityValidationRule");
            }

            AddValidationRule(string.Empty, entityValidationRule);
        }
        public void AddRule()
        {
            EntityValidatorBase <string>   entityValidatorBase  = Substitute.ForPartsOf <EntityValidatorBase <string> >();
            IEntityValidationRule <string> entityValidationRule = Substitute.For <IEntityValidationRule <string> >();

            entityValidatorBase.AddRule(entityValidationRule);
            IList <IEntityValidationRule <string> > validationRules = entityValidatorBase.GetValidationRulesByRuleSetName();

            Assert.AreEqual(1, validationRules.Count);
        }
        public void GetValidationRulesByRuleSetNameShouldReturnEmptyValidationRuleListWhenNoRuleSetIsFound()
        {
            EntityValidatorBase <string>   entityValidatorBase  = Substitute.ForPartsOf <EntityValidatorBase <string> >();
            IEntityValidationRule <string> entityValidationRule = Substitute.For <IEntityValidationRule <string> >();

            entityValidatorBase.AddRule("Test", entityValidationRule);
            IList <IEntityValidationRule <string> > validationRules = entityValidatorBase.GetValidationRulesByRuleSetName(string.Empty);

            Assert.IsNotNull(validationRules);
            Assert.AreEqual(0, validationRules.Count);
        }
        /// <summary>
        /// When implemented in a derived class, returns metadata for client validation.
        /// </summary>
        /// <returns>
        /// The metadata for client validation.
        /// </returns>
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            IEntityValidationRule entityValidationRule = ValidationRule;
            string message = entityValidationRule.GetValidationMessage(Metadata.Model);
            ValidatorProperties validatorProperties = entityValidationRule.Validator.GetValidatorProperties();

            yield return
                (new ModelClientValidationRangeRule(
                     message,
                     validatorProperties.GetPropertyValue(Constants.ValidationMessageParameterNames.FROM_VALUE),
                     validatorProperties.GetPropertyValue(Constants.ValidationMessageParameterNames.TO_VALUE)));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LaboPropertyValidator"/> class.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <param name="shouldValidate">if set to <c>true</c> [should validate].</param>
        public LaboPropertyValidator(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule, bool shouldValidate = false)
            : base(metadata, controllerContext)
        {
            if (validationRule == null)
            {
                throw new ArgumentNullException("validationRule");
            }

            ShouldValidate = shouldValidate;

            m_ValidationRule = validationRule;
        }
        /// <summary>
        /// When implemented in a derived class, returns metadata for client validation.
        /// </summary>
        /// <returns>
        /// The metadata for client validation.
        /// </returns>
        public override IEnumerable <ModelClientValidationRule> GetClientValidationRules()
        {
            IEntityValidationRule entityValidationRule = ValidationRule;
            string message = entityValidationRule.GetValidationMessage(Metadata.Model);
            ValidatorProperties validatorProperties = entityValidationRule.Validator.GetValidatorProperties();

            yield return
                (new ModelClientValidationStringLengthRule(
                     message,
                     validatorProperties.GetPropertyValue <int>(Constants.ValidationMessageParameterNames.MIN),
                     validatorProperties.GetPropertyValue <int>(Constants.ValidationMessageParameterNames.MAX)));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LaboPropertyValidator"/> class.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <param name="shouldValidate">if set to <c>true</c> [should validate].</param>
        public LaboPropertyValidator(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule, bool shouldValidate = false)
            : base(metadata, controllerContext)
        {
            if (validationRule == null)
            {
                throw new ArgumentNullException("validationRule");
            }

            ShouldValidate = shouldValidate;

            m_ValidationRule = validationRule;
        }
        public void AddRuleShouldCallEntityValidationRuleSetRulesetName()
        {
            EntityValidatorBase <Customer> entityValidator = Substitute.For <EntityValidatorBase <Customer> >();
            const string ruleSetName = "TestRuleSet";
            EntityValidationRuleSetBuilder <Customer> ruleSetBuilder = new EntityValidationRuleSetBuilder <Customer>(Substitute.For <IPropertyDisplayNameResolver>(), entityValidator, ruleSetName);

            IEntityValidationRule <Customer> entityValidationRule = Substitute.For <IEntityValidationRule <Customer> >();

            ruleSetBuilder.AddRule(entityValidationRule);

            entityValidator.Received(1).AddRule(ruleSetName, entityValidationRule);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Adds the entity validation rule to the entity validator.
        /// </summary>
        /// <param name="ruleSetName">Name of the rule set.</param>
        /// <param name="entityValidationRule">The entity validation rule.</param>
        public void AddRule(string ruleSetName, IEntityValidationRule <TEntity> entityValidationRule)
        {
            if (ruleSetName == null)
            {
                throw new ArgumentNullException("ruleSetName");
            }

            if (entityValidationRule == null)
            {
                throw new ArgumentNullException("entityValidationRule");
            }

            AddValidationRule(ruleSetName, entityValidationRule);
        }
        /// <summary>
        /// Gets the validators for property.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="context">The context.</param>
        /// <param name="validator">The validator.</param>
        /// <param name="validationTransformer">The validation transformer.</param>
        /// <returns>The validators.</returns>
        private IEnumerable <ModelValidator> GetValidatorsForProperty(ModelMetadata metadata, ControllerContext context, IEntityValidator validator, IValidationTransformer validationTransformer)
        {
            List <ModelValidator> modelValidators = new List <ModelValidator>();

            if (validator != null)
            {
                IList <IEntityValidationRule> validationRules = validator.ValidationRules;

                HashSet <string> requiredPropertyValidators = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

                for (int i = 0; i < validationRules.Count; i++)
                {
                    IEntityValidationRule entityValidationRule = validationRules[i];

                    string propertyName = ValidationTransformerHelper.GetPropertyName(metadata, validationTransformer);
                    if (entityValidationRule.MemberInfo.Name == propertyName)
                    {
                        ModelValidator modelValidator = GetModelPropertyValidator(metadata, context, entityValidationRule);
                        if (modelValidator != null)
                        {
                            if (modelValidator.IsRequired)
                            {
                                // There can be one required validator per property
                                if (!requiredPropertyValidators.Contains(propertyName))
                                {
                                    requiredPropertyValidators.Add(propertyName);
                                    modelValidators.Add(modelValidator);
                                }
                            }
                            else
                            {
                                modelValidators.Add(modelValidator);
                            }
                        }
                    }
                }

                if (metadata.IsRequired && AddImplicitRequiredAttributeForValueTypes)
                {
                    bool hasRequiredValidators = modelValidators.Any(x => x.IsRequired);

                    if (!hasRequiredValidators)
                    {
                        modelValidators.Add(CreateNotNullValidatorForProperty(metadata, context));
                    }
                }
            }

            return(modelValidators);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Validates the specified entity.
        /// </summary>
        /// <param name="entity">The entity.</param>
        /// <param name="ruleSetName">The rule set name.</param>
        /// <returns>The validation result.</returns>
        public ValidationResult Validate(TEntity entity, string ruleSetName = "")
        {
            if (ruleSetName == null)
            {
                throw new ArgumentNullException("ruleSetName");
            }

            ValidationResult result = new ValidationResult();

            IList <IEntityValidationRule <TEntity> > validationRules = GetValidationRulesByRuleSetName(ruleSetName);

            for (int i = 0; i < validationRules.Count; i++)
            {
                IEntityValidationRule <TEntity> entityValidationRule = validationRules[i];
                ValidationResult validationResult = entityValidationRule.Validate(entity);
                result.Errors.AddRange(validationResult.Errors);
            }

            return(result);
        }
 public override LaboPropertyValidator CreateLaboPropertyValidator(System.Web.Mvc.ModelMetadata propertyMetaData, System.Web.Mvc.ControllerContext controllerContext, IEntityValidationRule entityValidationRule)
 {
     return new GreaterThanOrEqualToLaboValidationPropertyValidatorAdapter(propertyMetaData, controllerContext, entityValidationRule);
 }
 public abstract LaboPropertyValidator CreateLaboPropertyValidator(ModelMetadata propertyMetaData, ControllerContext controllerContext, IEntityValidationRule entityValidationRule);
        /// <summary>
        /// Initializes a new instance of the <see cref="EqualToLaboValidationPropertyValidatorAdapter"/> class.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <param name="validationTransformerManager">The validation transformer manager.</param>
        public EqualToLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule, IValidationTransformerManager validationTransformerManager = null)
            : base(metadata, controllerContext, validationRule)
        {
            ShouldValidate = false;

            m_ValidationTransformerManager = validationTransformerManager;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="RequiredLaboPropertyValidatorAdapter"/> class.
        /// </summary>
        /// <param name="metadata">The metadata.</param>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="validationRule">The validation rule.</param>
        public RequiredLaboPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule)
            : base(metadata, controllerContext, validationRule)
        {
            Type modelType = metadata.ModelType;
            bool isNonNullableValueType = modelType.IsValueType && !IsNullable(modelType);

            ShouldValidate = isNonNullableValueType && metadata.Model == null;
        }
Ejemplo n.º 20
0
 /// <summary>
 /// Adds the entity validation rule to the entity validator.
 /// </summary>
 /// <param name="entityValidationRule">The entity validation rule.</param>
 /// <exception cref="System.ArgumentNullException">entityValidationRule</exception>
 public void AddRule(IEntityValidationRule <TEntity> entityValidationRule)
 {
     m_EntityValidator.AddRule(m_RuleSetName, entityValidationRule);
 }
Ejemplo n.º 21
0
 public override LaboPropertyValidator CreateLaboPropertyValidator(ModelMetadata propertyMetaData, ControllerContext controllerContext, IEntityValidationRule entityValidationRule)
 {
     return(new StringLengthLaboValidationPropertyValidatorAdapter(propertyMetaData, controllerContext, entityValidationRule));
 }
 public override LaboPropertyValidator CreateLaboPropertyValidator(ModelMetadata propertyMetaData, ControllerContext controllerContext, IEntityValidationRule entityValidationRule)
 {
     return new RegexLaboValidationPropertyValidatorAdapter(propertyMetaData, controllerContext, entityValidationRule);
 }
 public abstract LaboPropertyValidator CreateLaboPropertyValidator(ModelMetadata propertyMetaData, ControllerContext controllerContext, IEntityValidationRule entityValidationRule);
 /// <summary>
 /// Initializes a new instance of the <see cref="LessThanOrEqualToLaboValidationPropertyValidatorAdapter"/> class.
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="controllerContext">The controller context.</param>
 /// <param name="validationRule">The validation rule.</param>
 public LessThanOrEqualToLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule)
     : base(metadata, controllerContext, validationRule)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="StringLengthLaboValidationPropertyValidatorAdapter"/> class.
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="controllerContext">The controller context.</param>
 /// <param name="validationRule">The validation rule.</param>
 public StringLengthLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule)
     : base(metadata, controllerContext, validationRule)
 {
     ShouldValidate = false;
 }
Ejemplo n.º 26
0
 public override LaboPropertyValidator CreateLaboPropertyValidator(System.Web.Mvc.ModelMetadata propertyMetaData, System.Web.Mvc.ControllerContext controllerContext, IEntityValidationRule entityValidationRule)
 {
     return(new EqualToLaboValidationPropertyValidatorAdapter(propertyMetaData, controllerContext, entityValidationRule));
 }
Ejemplo n.º 27
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LessThanOrEqualToLaboValidationPropertyValidatorAdapter"/> class.
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="controllerContext">The controller context.</param>
 /// <param name="validationRule">The validation rule.</param>
 public LessThanOrEqualToLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule)
     : base(metadata, controllerContext, validationRule)
 {
 }
        /// <summary>
        /// Gets the model property validator.
        /// </summary>
        /// <param name="meta">The meta.</param>
        /// <param name="context">The context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <returns>The model validator.</returns>
        private ModelValidator GetModelPropertyValidator(ModelMetadata meta, ControllerContext context, IEntityValidationRule validationRule)
        {
            string type = validationRule.Validator.GetValidatorTypeName();

            Func<ModelMetadata, ControllerContext, IEntityValidationRule, IValidationTransformerManager, ModelValidator> factory;

            if (!m_PropertyValidatorFactories.TryGetValue(type, out factory))
            {
                factory = (metadata, controllerContext, validator, validatorTransFormerManager) => new LaboPropertyValidator(metadata, controllerContext, validator);
            }

            return factory(meta, context, validationRule, m_ValidationTransformerManager);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="EmailLaboValidationPropertyValidatorAdapter"/> class.
 /// </summary>
 /// <param name="metadata">The metadata.</param>
 /// <param name="controllerContext">The controller context.</param>
 /// <param name="validationRule">The validation rule.</param>
 public EmailLaboValidationPropertyValidatorAdapter(ModelMetadata metadata, ControllerContext controllerContext, IEntityValidationRule validationRule)
     : base(metadata, controllerContext, validationRule)
 {
     ShouldValidate = false;
 }
        /// <summary>
        /// Gets the model property validator.
        /// </summary>
        /// <param name="meta">The meta.</param>
        /// <param name="context">The context.</param>
        /// <param name="validationRule">The validation rule.</param>
        /// <returns>The model validator.</returns>
        private ModelValidator GetModelPropertyValidator(ModelMetadata meta, ControllerContext context, IEntityValidationRule validationRule)
        {
            string type = validationRule.Validator.GetValidatorTypeName();

            Func <ModelMetadata, ControllerContext, IEntityValidationRule, IValidationTransformerManager, ModelValidator> factory;

            if (!m_PropertyValidatorFactories.TryGetValue(type, out factory))
            {
                factory = (metadata, controllerContext, validator, validatorTransFormerManager) => new LaboPropertyValidator(metadata, controllerContext, validator);
            }

            return(factory(meta, context, validationRule, m_ValidationTransformerManager));
        }