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