コード例 #1
0
        public async Task HandleAsync_succeeds_and_calls_next_handler_when_request_is_valid()
        {
            var request = new Request();

            Mock.Get(_validatorFirst)
            .Setup(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok(true));

            Mock.Get(_validatorSecond)
            .Setup(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok(true));

            Mock.Get(_handler)
            .Setup(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok());

            var result = await _sut.HandleAsync(request);

            result.Should().NotBeNull();
            result.Match(unit => true, error => false).Should().Be(true);

            Mock.Get(_validatorFirst)
            .Verify(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());

            Mock.Get(_validatorSecond)
            .Verify(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());

            Mock.Get(_handler)
            .Verify(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());
        }
コード例 #2
0
        public async Task HandleAsync_succeeds_when_request_has_no_validators()
        {
            var request = new Request();

            var sut = new ValidationHandler <Request, Unit>(
                Enumerable.Empty <IValidator <Request> >(),
                _settings,
                _handler
                );

            Mock.Get(_handler)
            .Setup(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok());

            var result = await sut.HandleAsync(request);

            result.Should().NotBeNull();
            result.Match(unit => true, error => false).Should().Be(true);

            Mock.Get(_handler)
            .Verify(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());
        }
コード例 #3
0
        public async Task HandleAsync_returns_AggregateError_when_stop_on_failure_is_disabled()
        {
            var request = new Request();

            var sut = new ValidationHandler <Request, Unit>(
                new[] { _validatorFirst, _validatorSecond },
                new ValidationHandlerSettings {
                StopOnFailure = false
            },
                _handler
                );

            Mock.Get(_validatorFirst)
            .Setup(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Fail <bool>(new Error(String.Empty)));

            Mock.Get(_validatorSecond)
            .Setup(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Fail <bool>(new Error(String.Empty)));

            Mock.Get(_handler)
            .Setup(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(Result.Ok());

            var result = await sut.HandleAsync(request);

            result.Should().NotBeNull();
            result.Match <bool?>(unit => null, error => error.GetType() == typeof(AggregateError)).Should().Be(true);

            Mock.Get(_validatorFirst)
            .Verify(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());

            Mock.Get(_validatorSecond)
            .Verify(v => v.ValidateAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Once());

            Mock.Get(_handler)
            .Verify(v => v.HandleAsync(It.IsAny <Request>(), It.IsAny <CancellationToken>()), Times.Never());
        }