public async Task Should_run_next_when_there_is_no_validatior() { _validators = new IValidator <object> [0]; var behavior = new ValidatorBehavior <object, object>(_validators); await behavior.Handle(new object(), default(CancellationToken), NextHandle); Assert.True(_delegateHaveBeenCalled); }
public ValidatorBehaviorFixture() { _fixture = new Fixture(); FakeData = _fixture.Create <FakeData>(); Logger = Mock.Of <ILogger <ValidatorBehavior <TRequest, TResponse> > >(); Validators = new List <IValidator <TRequest> >(); Behavior = new ValidatorBehavior <TRequest, TResponse>(Validators, Logger); }
private static ValidatorBehavior <TRequest, TResponse> GetValidatorBehavior <TRequest, TResponse>(IValidator <TRequest> validator) where TRequest : IRequest <TResponse> { var validatorFactoryMock = new Mock <IValidatorFactory>(); validatorFactoryMock.Setup(v => v.GetValidator <TRequest>()).Returns(validator); var loggerMock = new Mock <ILogger <ValidatorBehavior <TRequest, TResponse> > >(); var validatorBehavior = new ValidatorBehavior <TRequest, TResponse>(validatorFactoryMock.Object, loggerMock.Object); return(validatorBehavior); }
public async Task Should_run_next_when_there_is_no_validatior_Async() { _validators = new IValidator <object> [0]; var behavior = new ValidatorBehavior <object, object>(_validators); await behavior.Handle(new object(), default(CancellationToken), async() => { await Task.Delay(1); _delegateHaveBeenCalled = true; return(new Object()); }); Assert.True(_delegateHaveBeenCalled); }
public async Task Should_run_next_when_everything_is_valid() { var validationResult = new ValidationResult(new List <ValidationFailure>()); _validator.Setup(v => v.Validate(It.IsAny <object>())) .Returns(validationResult); _validators[0] = _validator.Object; var behavior = new ValidatorBehavior <object, object>(_validators); await behavior.Handle(new object(), default(CancellationToken), NextHandle); Assert.True(_delegateHaveBeenCalled); }
public static void SetupQuery <TContext, TRequest, TResponse>(this Mock <IMediator> mockMediator, TContext context, IRequestHandler <TRequest, TResponse> interactor, IValidator <TRequest> validator) where TRequest : IQuery <TResponse> where TContext : DbContext { ValidatorBehavior <TRequest, TResponse> validatorBehavior = GetValidatorBehavior <TRequest, TResponse>(validator); var queryBehavior = new QueryBehavior <TContext, TRequest, TResponse>(context); mockMediator.Setup(m => m.Send(It.IsAny <TRequest>(), default)) .Returns <TRequest, CancellationToken>(async(request, cancellationToken) => { return(await validatorBehavior.Handle(request, cancellationToken, async() => await queryBehavior.Handle(request, cancellationToken, async() => await interactor.Handle(request, cancellationToken)))); }); }
public static void SetupCommand <TRequest, TResponse>(this Mock <IMediator> mockMediator, Func <TRequest, CancellationToken, Task <TResponse> > next, IValidator <TRequest> validator) where TRequest : ICommand <TResponse> { ValidatorBehavior <TRequest, TResponse> validatorBehavior = GetValidatorBehavior <TRequest, TResponse>(validator); var behaviorLoggerMock = new Mock <ILogger <LoggingBehavior <TRequest, TResponse> > >(); var loggerBehavior = new LoggingBehavior <TRequest, TResponse>(behaviorLoggerMock.Object); mockMediator.Setup(m => m.Send(It.IsAny <TRequest>(), default)) .Returns <TRequest, CancellationToken>(async(request, cancellationToken) => { return(await validatorBehavior.Handle(request, cancellationToken, async() => await loggerBehavior.Handle(request, cancellationToken, async() => await next(request, cancellationToken)))); }); }
public void Should_throw_an_exception_when_there_is_a_ValidatiorFailure() { var failures = new List <ValidationFailure>() { new ValidationFailure("teste", "teste") }; var validationResult = new ValidationResult(failures); _validator.Setup(v => v.Validate(It.IsAny <object>())) .Returns(validationResult); _validators[0] = _validator.Object; var behavior = new ValidatorBehavior <object, object>(_validators); Assert.False(_delegateHaveBeenCalled); Assert.ThrowsAsync <ValidationException>(async() => { await behavior.Handle(new object(), default(CancellationToken), NextHandle); }); }