public void AddRuleSet()
        {
            EntityValidatorBase <Customer> entityValidatorBase = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();

            entityValidatorBase.AddRuleSet("Test", x =>
            {
                x.AddRule(y => y.RuleFor(z => z.FirstName).NotNull());
                x.AddRule(y => y.RuleFor(z => z.LastName).NotEmpty());
            });

            SortedList <string, IList <IEntityValidationRule <Customer> > > validationRules = entityValidatorBase.AllEntityValidationRules;

            Assert.IsTrue(validationRules.ContainsKey("Test"));

            IList <IEntityValidationRule <Customer> > entityValidationRules = validationRules["Test"];

            Assert.IsNotNull(entityValidationRules);
            Assert.AreEqual(2, entityValidationRules.Count);

            Assert.AreEqual("FirstName", entityValidationRules[0].MemberName);
            Assert.IsInstanceOf <NotNullValidator>(((EntityPropertyValidator)entityValidationRules[0].Validator).InnerValidator);

            Assert.AreEqual("LastName", entityValidationRules[1].MemberName);
            Assert.IsInstanceOf <NotEmptyValidator>(((EntityPropertyValidator)entityValidationRules[1].Validator).InnerValidator);
        }
Exemple #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EntityValidationRuleBuilder{TEntity, TProperty}"/> class.
        /// </summary>
        /// <param name="entityValidatorBase">The entity validator base.</param>
        /// <param name="propertyDisplayNameResolver">The property display name resolver.</param>
        /// <param name="propertyExpression">The property expression.</param>
        /// <param name="ruleSetName">The rule set name.</param>
        /// <exception cref="System.ArgumentNullException">propertyExpression</exception>
        public EntityValidationRuleBuilder(EntityValidatorBase <TEntity> entityValidatorBase, IPropertyDisplayNameResolver propertyDisplayNameResolver, Expression <Func <TEntity, TProperty> > propertyExpression, string ruleSetName = "")
        {
            if (entityValidatorBase == null)
            {
                throw new ArgumentNullException("entityValidatorBase");
            }

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

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

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

            m_EntityValidatorBase         = entityValidatorBase;
            m_PropertyDisplayNameResolver = propertyDisplayNameResolver;
            m_PropertyExpression          = propertyExpression;
            m_RuleSetName = ruleSetName;
            m_Validators  = new List <IEntityPropertyValidator>();
        }
        public void ValidateAndThrowExceptionShouldRunTheCorrectRuleSet()
        {
            EntityValidatorBase <Customer> entityValidatorBase = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();

            entityValidatorBase.AddRule(x => x.RuleFor(y => y.FirstName).NotNull());
            entityValidatorBase.AddRuleSet("Test", x =>
            {
                x.AddRule(y => y.RuleFor(z => z.FirstName).NotEmpty());
                x.AddRule(y => y.RuleFor(z => z.LastName).NotEmpty());
            });

            Assert.DoesNotThrow(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = string.Empty
            }));

            Assert.Throws <ValidationException>(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = null
            }));

            Assert.DoesNotThrow(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = "Test",
                LastName  = "Test"
            }, "Test"));

            Assert.Throws <ValidationException>(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = string.Empty,
                LastName  = "Test"
            }, "Test"));
        }
Exemple #4
0
        public void Build()
        {
            EntityValidatorBase <Customer> customerValidator = Substitute.For <EntityValidatorBase <Customer> >();

            EntityValidationRuleBuilder <Customer, string> entityValidationRuleBuilder = new EntityValidationRuleBuilder <Customer, string>(customerValidator, Substitute.For <IPropertyDisplayNameResolver>(), x => x.Name);

            entityValidationRuleBuilder.AddValidator(new EntityPropertyValidator(new NotNullValidator()));
            entityValidationRuleBuilder.AddValidator(new EntityPropertyValidator(new NotEmptyValidator()));

            Expression <Func <Customer, bool> > expression = x => x.Name != null;

            entityValidationRuleBuilder.SetSpecification(new Specification <Customer>(expression));

            entityValidationRuleBuilder.Build();

            Assert.AreEqual(2, customerValidator.EntityValidationRules.Count);

            EntityPropertyValidationRule <Customer, string> validationRule0 = (EntityPropertyValidationRule <Customer, string>)customerValidator.EntityValidationRules[0];
            EntityPropertyValidationRule <Customer, string> validationRule1 = (EntityPropertyValidationRule <Customer, string>)customerValidator.EntityValidationRules[1];

            Assert.AreEqual(typeof(NotNullValidator).Name, validationRule0.Validator.GetValidatorTypeName());
            Assert.AreEqual(typeof(NotEmptyValidator).Name, validationRule1.Validator.GetValidatorTypeName());

            Assert.AreEqual(expression, validationRule0.Specification.Predicate);
            Assert.AreEqual(expression, validationRule1.Specification.Predicate);

            Assert.AreSame(validationRule0.Specification, validationRule1.Specification);
        }
        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());
        }
        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 RuleForShouldCallEntityValidationRuleSetRulesetName()
        {
            EntityValidatorBase <Customer> entityValidator = Substitute.For <EntityValidatorBase <Customer> >();
            const string ruleSetName = "TestRuleSet";
            EntityValidationRuleSetBuilder <Customer> ruleSetBuilder = new EntityValidationRuleSetBuilder <Customer>(Substitute.For <IPropertyDisplayNameResolver>(), entityValidator, ruleSetName);

            EntityValidationRuleBuilder <Customer, string> entityValidationRuleBuilder = (EntityValidationRuleBuilder <Customer, string>)ruleSetBuilder.RuleFor(x => x.FirstName);

            Assert.AreEqual(ruleSetName, entityValidationRuleBuilder.RuleSetName);
        }
        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);
        }
        public void ValidateAndThrowExceptionShouldNotThrowExceptionWhenValid()
        {
            EntityValidatorBase <Customer> entityValidatorBase = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();

            entityValidatorBase.AddRule(x => x.RuleFor(y => y.FirstName).NotEmpty());

            Assert.DoesNotThrow(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = "Test"
            }));
        }
        public void ValidateAndThrowExceptionShouldThrowExceptionWhenInvalid()
        {
            EntityValidatorBase <Customer> entityValidatorBase = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();

            entityValidatorBase.AddRule(x => x.RuleFor(y => y.FirstName).NotEmpty());

            Assert.Throws <ValidationException>(() => entityValidatorBase.ValidateAndThrowException(new Customer
            {
                FirstName = string.Empty
            }));
        }
Exemple #11
0
        public void SetMessage()
        {
            EntityValidatorBase <Customer> customerValidator = Substitute.For <EntityValidatorBase <Customer> >();

            EntityValidationRuleBuilder <Customer, string> entityValidationRuleBuilder = new EntityValidationRuleBuilder <Customer, string>(customerValidator, Substitute.For <IPropertyDisplayNameResolver>(), x => x.Name);
            const string message = "Costumer name cannot be empty.";

            entityValidationRuleBuilder.SetMessage(message);

            Assert.AreEqual(message, entityValidationRuleBuilder.Message);
        }
        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);
        }
        public void AddRuleShouldAddToRuleSetCollectionOfTheValidator()
        {
            EntityValidatorBase <Customer> entityValidator = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();
            const string ruleSetName = "TestRuleSet";
            EntityValidationRuleSetBuilder <Customer> ruleSetBuilder = new EntityValidationRuleSetBuilder <Customer>(Substitute.For <IPropertyDisplayNameResolver>(), entityValidator, ruleSetName);

            ruleSetBuilder.AddRule(x => x.RuleFor(y => y.FirstName).NotNull());

            IList <IEntityValidationRule <Customer> > validationRules = entityValidator.AllEntityValidationRules[ruleSetName];

            Assert.IsNotNull(validationRules);
            Assert.AreEqual(1, validationRules.Count);
            Assert.AreEqual("FirstName", validationRules[0].MemberName);
        }
        public void ValidateExceptionShouldRunTheCorrectRuleSet()
        {
            EntityValidatorBase <Customer> entityValidatorBase = Substitute.ForPartsOf <EntityValidatorBase <Customer> >();

            entityValidatorBase.AddRule(x => x.RuleFor(y => y.FirstName).NotNull());
            entityValidatorBase.AddRuleSet("Test", x =>
            {
                x.AddRule(y => y.RuleFor(z => z.FirstName).NotEmpty());
                x.AddRule(y => y.RuleFor(z => z.LastName).NotEmpty());
            });

            ValidationResult validationResult = entityValidatorBase.Validate(new Customer
            {
                FirstName = string.Empty
            });

            Assert.IsTrue(validationResult.IsValid);

            validationResult = entityValidatorBase.Validate(new Customer
            {
                FirstName = null
            });

            Assert.IsFalse(validationResult.IsValid);

            validationResult = entityValidatorBase.Validate(new Customer
            {
                FirstName = "Test",
                LastName  = "Test"
            }, "Test");

            Assert.IsTrue(validationResult.IsValid);

            validationResult = entityValidatorBase.Validate(new Customer
            {
                FirstName = string.Empty,
                LastName  = "Test"
            }, "Test");

            Assert.IsFalse(validationResult.IsValid);
        }
Exemple #15
0
        /// <summary>
        /// Initializes a new instance of the <see cref="EntityValidationRuleSetBuilder{TEntity}"/> class.
        /// </summary>
        /// <param name="propertyDisplayNameResolver">The property display name resolver.</param>
        /// <param name="entityValidator">The entity validator.</param>
        /// <param name="ruleSetName">The rule set name.</param>
        public EntityValidationRuleSetBuilder(IPropertyDisplayNameResolver propertyDisplayNameResolver, EntityValidatorBase <TEntity> entityValidator, string ruleSetName)
        {
            if (propertyDisplayNameResolver == null)
            {
                throw new ArgumentNullException("propertyDisplayNameResolver");
            }

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

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

            m_EntityValidator             = entityValidator;
            m_RuleSetName                 = ruleSetName;
            m_PropertyDisplayNameResolver = propertyDisplayNameResolver;
        }
Exemple #16
0
        public void BuildShouldAddValidatorsToTheRuleSetWhenRuleSetIsGiven()
        {
            EntityValidatorBase <Customer> customerValidator = Substitute.For <EntityValidatorBase <Customer> >();

            const string ruleSetName = "TestRuleSet";
            EntityValidationRuleBuilder <Customer, string> entityValidationRuleBuilder = new EntityValidationRuleBuilder <Customer, string>(customerValidator, Substitute.For <IPropertyDisplayNameResolver>(), x => x.Name, ruleSetName);

            entityValidationRuleBuilder.AddValidator(new EntityPropertyValidator(new NotNullValidator()));
            entityValidationRuleBuilder.AddValidator(new EntityPropertyValidator(new NotEmptyValidator()));

            Assert.AreEqual(ruleSetName, entityValidationRuleBuilder.RuleSetName);

            entityValidationRuleBuilder.Build();

            Assert.AreEqual(1, customerValidator.AllEntityValidationRules.Count);

            IList <IEntityValidationRule <Customer> >       entityValidationRules = customerValidator.AllEntityValidationRules[ruleSetName];
            EntityPropertyValidationRule <Customer, string> validationRule0       = (EntityPropertyValidationRule <Customer, string>)entityValidationRules[0];
            EntityPropertyValidationRule <Customer, string> validationRule1       = (EntityPropertyValidationRule <Customer, string>)entityValidationRules[1];

            Assert.AreEqual(typeof(NotNullValidator).Name, validationRule0.Validator.GetValidatorTypeName());
            Assert.AreEqual(typeof(NotEmptyValidator).Name, validationRule1.Validator.GetValidatorTypeName());
        }