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);
        }
Exemple #2
0
 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);
            });
        }