/// <summary> /// Initialises a new instance of <see cref="MessageEnrichingValidatorDecorator{TValidated}"/>. /// </summary> /// <param name="validator">A validator instance.</param> /// <param name="failureMessageEnricher">A service which adds failure messages to validation results.</param> /// <exception cref="System.ArgumentNullException">If any parameter is <see langword="null" />.</exception> public MessageEnrichingValidatorDecorator(IValidator <TValidated> validator, IAddsFailureMessagesToResult failureMessageEnricher) { this.validator = validator ?? throw new System.ArgumentNullException(nameof(validator)); this.failureMessageEnricher = failureMessageEnricher ?? throw new System.ArgumentNullException(nameof(failureMessageEnricher)); }
/// <summary> /// Initialises a new instance of <see cref="MessageSupportValidatorWrapper"/>. /// </summary> /// <param name="failureMessageEnricher">The failure message enriching service.</param> /// <exception cref="ArgumentNullException">If <paramref name="failureMessageEnricher"/> is <see langword="null" />.</exception> public MessageSupportValidatorWrapper(IAddsFailureMessagesToResult failureMessageEnricher) { this.failureMessageEnricher = failureMessageEnricher ?? throw new ArgumentNullException(nameof(failureMessageEnricher)); }
public void ValidateAsyncShouldReturnTheWrappedValidatorResultIfOptionsDisableMessageGeneration([Frozen] IValidator <object> validator, [Frozen] IAddsFailureMessagesToResult failureMessageEnricher, MessageEnrichingValidatorDecorator <object> sut, [RuleResult] ValidationResult <object> originalResult, [RuleResult] ValidationResult <object> resultWithMessages, object validatedObject, ValidationOptions options) { options.EnableMessageGeneration = false; Mock.Get(validator).Setup(x => x.ValidateAsync(validatedObject, options, default)).Returns(Task.FromResult <IQueryableValidationResult <object> >(originalResult)); Assert.That(async() => await sut.ValidateAsync(validatedObject, options), Is.SameAs(originalResult)); Mock.Get(failureMessageEnricher).Verify(x => x.GetResultWithMessagesAsync <object>(It.IsAny <IQueryableValidationResult <object> >(), It.IsAny <CancellationToken>()), Times.Never); }
public void ValidateAsyncShouldReturnTheWrappedValidatorResultIfOptionsAreOmitted([Frozen] IValidator <object> validator, [Frozen] IAddsFailureMessagesToResult failureMessageEnricher, MessageEnrichingValidatorDecorator <object> sut, [RuleResult] ValidationResult <object> originalResult, [RuleResult] ValidationResult <object> resultWithMessages, object validatedObject) { Mock.Get(validator).Setup(x => x.ValidateAsync(validatedObject, default, default)).Returns(Task.FromResult <IQueryableValidationResult <object> >(originalResult));
public void ValidateAsyncShouldUseTheWrappedValidatorThenReturnTheResultEnrichedWithMessagesIfOptionsEnableIt([Frozen] IValidator <object> validator, [Frozen] IAddsFailureMessagesToResult failureMessageEnricher, MessageEnrichingValidatorDecorator <object> sut, [RuleResult] ValidationResult <object> originalResult, [RuleResult] ValidationResult <object> resultWithMessages, object validatedObject, ValidationOptions options) { options.EnableMessageGeneration = true; Mock.Get(validator).Setup(x => x.ValidateAsync(validatedObject, options, default)).Returns(Task.FromResult <IQueryableValidationResult <object> >(originalResult)); Mock.Get(failureMessageEnricher).Setup(x => x.GetResultWithMessagesAsync(originalResult, default)).Returns(Task.FromResult <IQueryableValidationResult <object> >(resultWithMessages)); Assert.That(async() => await sut.ValidateAsync(validatedObject, options), Is.SameAs(resultWithMessages)); }