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()); }
/// <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))); }
/// <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))); }
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); }
/// <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); }
/// <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="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; }
/// <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); }
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); }
/// <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; }
public override LaboPropertyValidator CreateLaboPropertyValidator(System.Web.Mvc.ModelMetadata propertyMetaData, System.Web.Mvc.ControllerContext controllerContext, IEntityValidationRule entityValidationRule) { return(new EqualToLaboValidationPropertyValidatorAdapter(propertyMetaData, controllerContext, entityValidationRule)); }
/// <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)); }