/// <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>()); }