Пример #1
0
        /// <summary>
        /// Associates an instance of IValidator with the current property rule and is used to validate each item within the collection.
        /// </summary>
        /// <param name="validator">The validator to use</param>
        public static ICollectionValidatorRuleBuilder <T, TCollectionElement> SetCollectionValidator <T, TCollectionElement>(this IRuleBuilder <T, IEnumerable <TCollectionElement> > ruleBuilder, IValidator <TCollectionElement> validator)
        {
            var adaptor = new ChildCollectionValidatorAdaptor(validator);

            ruleBuilder.SetValidator(adaptor);
            return(new CollectionValidatorRuleBuilder <T, TCollectionElement>(ruleBuilder, adaptor));
        }
Пример #2
0
        /// <summary>
        /// Uses a provider to instantiate a validator instance to be associated with a collection
        /// </summary>
        /// <param name="ruleBuilder"></param>
        /// <param name="validator"></param>
        /// <typeparam name="T"></typeparam>
        /// <typeparam name="TCollectionElement"></typeparam>
        /// <typeparam name="TValidator"></typeparam>
        /// <returns></returns>
        public static ICollectionValidatorRuleBuilder <T, TCollectionElement> SetCollectionValidator <T, TCollectionElement, TValidator>(this IRuleBuilder <T, IEnumerable <TCollectionElement> > ruleBuilder, Func <T, TValidator> validator)
            where TValidator : IValidator <TCollectionElement>
        {
            var adaptor = new ChildCollectionValidatorAdaptor(parent => validator((T)parent), typeof(TValidator));

            ruleBuilder.SetValidator(adaptor);
            return(new CollectionValidatorRuleBuilder <T, TCollectionElement>(ruleBuilder, adaptor));
        }
        public void Given_CorrectValidatorWithSameValidatorType_When_Verifying_Then_ValidationPass()
        {
            // Arrange
            var childCollectionValidatorAdaptor = new ChildCollectionValidatorAdaptor(new FakeValidator());
            var verifier = new ChildCollectionValidatorVerifier <FakeValidator>();

            // Act & Assert
            AssertExtension.NotThrows(() => verifier.Verify(childCollectionValidatorAdaptor));
        }
        public void Given_CorrectValidatorWithDifferentChildValidatorType_When_Verifying_Then_ValidationFail()
        {
            // Arrange
            var childCollectionValidatorAdaptor = new ChildCollectionValidatorAdaptor(new OtherFakeValidator());
            var verifier = new ChildCollectionValidatorVerifier <FakeValidator>();

            // Act & Assert
            AssertExtension.Throws <XunitException>(() => verifier.Verify(childCollectionValidatorAdaptor), "(ChildValidatorType property)");
        }
Пример #5
0
        public static void NestedRules <T, TCollectionElement>(
            this IRuleBuilder <T, IEnumerable <TCollectionElement> > ruleBuilder,
            Action <InlineValidator <TCollectionElement> > setup)
        {
            var inlineValidator = new InlineValidator <TCollectionElement>();

            setup(inlineValidator);
            var adaptor = new ChildCollectionValidatorAdaptor(inlineValidator);

            ruleBuilder.SetValidator(adaptor);
        }
        /// <summary>
        /// Associates an instance of IValidator with the current property rule and is used to validate each item within the collection.
        /// </summary>
        /// <param name="ruleBuilder">Rule builder</param>
        /// <param name="validator">The validator to use</param>
        public static ICollectionValidatorRuleBuilder <T, TCollectionElement> SetCollectionValidator <T, TCollectionElement>(this IRuleBuilder <T, IEnumerable <TCollectionElement> > ruleBuilder, IValidator <TCollectionElement> validator)
        {
            var adaptor = new ChildCollectionValidatorAdaptor(validator);

            ruleBuilder.SetValidator(adaptor);
            IValidator <T> parentValidator = null;

            if (ruleBuilder is IExposesParentValidator <T> exposesParentValidator)
            {
                parentValidator = exposesParentValidator.ParentValidator;
            }

            return(new CollectionValidatorRuleBuilder <T, TCollectionElement>(ruleBuilder, adaptor, parentValidator));
        }
 public CollectionValidatorRuleBuilder(IRuleBuilder <T, IEnumerable <TCollectionElement> > ruleBuilder, ChildCollectionValidatorAdaptor adaptor, IValidator <T> parent)
 {
     this.ruleBuilder = ruleBuilder;
     this.adaptor     = adaptor;
     ParentValidator  = parent;
 }