Example #1
0
 /// <summary>
 /// Initialises a new instance of <see cref="Validator{TValidated}"/>.
 /// </summary>
 /// <param name="manifest">A validation manifest from which to creator the validator.</param>
 /// <param name="executorFactory">The rule-executor factory.</param>
 /// <param name="ruleFactory">The rule factory.</param>
 /// <param name="optionsResolver">An options resolver.</param>
 /// <param name="contextFactory">A rule execution context factory.</param>
 /// <exception cref="ArgumentNullException">If any parameter is <see langword="null" />.</exception>
 public Validator(ValidationManifest manifest,
                  IGetsRuleExecutor executorFactory,
                  IGetsAllExecutableRulesWithDependencies ruleFactory,
                  IGetsResolvedValidationOptions optionsResolver,
                  IGetsRuleExecutionContext contextFactory)
 {
     this.manifest        = manifest ?? throw new ArgumentNullException(nameof(manifest));
     this.executorFactory = executorFactory ?? throw new ArgumentNullException(nameof(executorFactory));
     this.ruleFactory     = ruleFactory ?? throw new ArgumentNullException(nameof(ruleFactory));
     this.optionsResolver = optionsResolver ?? throw new ArgumentNullException(nameof(optionsResolver));
     this.contextFactory  = contextFactory ?? throw new ArgumentNullException(nameof(contextFactory));
 }
        async Task <IQueryableValidationResult <string> > ExerciseGenericSut(ThrowingBehaviourValidatorDecorator <string> sut,
                                                                             string validated,
                                                                             ValidationOptions options,
                                                                             IValidator <string> wrapped,
                                                                             IGetsResolvedValidationOptions optionsResolver,
                                                                             RuleThrowingBehaviour behaviour,
                                                                             params RuleResult[] ruleResults)
        {
            var result = new ValidationResult <string>(ruleResults.Select(x => new ValidationRuleResult(x, null, null)), new Manifest.ValidationManifest {
                ValidatedType = typeof(string)
            });

            Mock.Get(wrapped).Setup(x => x.ValidateAsync(validated, options, default)).Returns(Task.FromResult <IQueryableValidationResult <string> >(result));
            options.RuleThrowingBehaviour = behaviour;
            Mock.Get(optionsResolver).Setup(x => x.GetResolvedValidationOptions(options)).Returns(new ResolvedValidationOptions {
                RuleThrowingBehaviour = behaviour
            });
            return(await sut.ValidateAsync(validated, options).ConfigureAwait(false));
        }
 /// <summary>
 /// Initialises a new instance of <see cref="ThrowingBehaviourValidatorDecorator{TValidated}"/>.
 /// </summary>
 /// <param name="wrapped">The wrapped validator.</param>
 /// <param name="optionsResolver">An options resolver.</param>
 /// <exception cref="ArgumentNullException">If any parameter is <see langword="null" />.</exception>
 public ThrowingBehaviourValidatorDecorator(IValidator <TValidated> wrapped, IGetsResolvedValidationOptions optionsResolver)
 {
     this.wrapped         = wrapped ?? throw new ArgumentNullException(nameof(wrapped));
     this.optionsResolver = optionsResolver ?? throw new ArgumentNullException(nameof(optionsResolver));
 }
 /// <summary>
 /// Initialises a new instance of <see cref="ExceptionThrowingValidatorWrapper"/>.
 /// </summary>
 /// <param name="optionsResolver">An options resolver.</param>
 /// <exception cref="ArgumentNullException">If <paramref name="optionsResolver"/> is <see langword="null" />.</exception>
 public ExceptionThrowingValidatorWrapper(IGetsResolvedValidationOptions optionsResolver)
 {
     this.optionsResolver = optionsResolver ?? throw new ArgumentNullException(nameof(optionsResolver));
 }
 public void GenericValidateAsyncShouldNotThrowIfBehaviourIsNeverAndResultContainsBothErrorsAndFailures([Frozen] IValidator <string> wrapped,
                                                                                                        [Frozen] IGetsResolvedValidationOptions optionsResolver,
                                                                                                        ThrowingBehaviourValidatorDecorator <string> sut,
                                                                                                        string validated,
                                                                                                        ValidationOptions options)
 {
     Assert.That(async() => await ExerciseGenericSut(sut, validated, options, wrapped, optionsResolver, RuleThrowingBehaviour.Never, Error(), Fail()),
                 Throws.Nothing);
 }
 public void GenericValidateAsyncShouldThrowIfBehaviourIsOnFailureAndResultsContainAFailure([Frozen] IValidator <string> wrapped,
                                                                                            [Frozen] IGetsResolvedValidationOptions optionsResolver,
                                                                                            ThrowingBehaviourValidatorDecorator <string> sut,
                                                                                            string validated,
                                                                                            ValidationOptions options)
 {
     Assert.That(async() => await ExerciseGenericSut(sut, validated, options, wrapped, optionsResolver, RuleThrowingBehaviour.OnFailure, Fail()),
                 Throws.InstanceOf <ValidationException>());
 }