Esempio n. 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));
 }
Esempio n. 2
0
        public async Task ValidateAsyncNonGenericShouldReturnReturnValidationResultContainingRuleResults([ManifestModel, Frozen] ValidationManifest manifest,
                                                                                                         [Frozen] IGetsRuleExecutor executorFactory,
                                                                                                         [Frozen] IGetsAllExecutableRulesWithDependencies ruleFactory,
                                                                                                         [Frozen] IGetsRuleExecutionContext contextFactory,
                                                                                                         IExecutesAllRules executor,
                                                                                                         Validator <object> sut,
                                                                                                         object validatedObject,
                                                                                                         ValidationOptions options,
                                                                                                         CancellationToken cancellationToken,
                                                                                                         IRuleExecutionContext context,
                                                                                                         [ExecutableModel] ExecutableRuleAndDependencies[] ruleAndDependencies,
                                                                                                         [RuleResult] ValidationRuleResult[] results)
        {
            Mock.Get(executorFactory)
            .Setup(x => x.GetRuleExecutorAsync(It.IsAny <ResolvedValidationOptions>(), cancellationToken))
            .Returns(Task.FromResult(executor));
            Mock.Get(contextFactory)
            .Setup(x => x.GetExecutionContext(ruleAndDependencies, It.IsAny <ResolvedValidationOptions>()))
            .Returns(context);
            Mock.Get(executor)
            .Setup(x => x.ExecuteAllRulesAsync(context, cancellationToken))
            .Returns(Task.FromResult((IReadOnlyCollection <ValidationRuleResult>)results));
            Mock.Get(ruleFactory)
            .Setup(x => x.GetRulesWithDependencies(manifest.RootValue, validatedObject, It.IsAny <ResolvedValidationOptions>()))
            .Returns(ruleAndDependencies);

            var result = await((IValidator)sut).ValidateAsync(validatedObject, options, cancellationToken);

            Assert.That(result.RuleResults, Is.EqualTo(results));
        }