public void WhenValidationFails_ThenThrows_DoesNotCallDecoratedCommandHandler() { var validator = A.Fake<IValidator<object>>(); A.CallTo(() => validator.Validate(A<object>._)).Returns(new ValidationResult(new[] {new ValidationFailure("MyProperty", "Some error")})); var decoratedHandler = A.Fake<IQueryHandler<object, object>>(); var sut = new ValidationAwareQueryHandler<object, object>(validator, decoratedHandler); var query = new object(); AssertEx.TaskThrows<ValidationException>(() => sut.Handle(query)); A.CallTo(() => validator.Validate(query)).MustHaveHappened(); A.CallTo(() => decoratedHandler.Handle(A<object>._)).MustNotHaveHappened(); }
public void Handle_ValidatesFirst_ThenPassesControlToDecoratedCommandHandler() { var validator = A.Fake<IValidator<object>>(); A.CallTo(() => validator.Validate(A<object>._)).Returns(new ValidationResult(new ValidationFailure[0])); var decoratedHandler = A.Fake<IQueryHandler<object, object>>(); var expected = new object(); A.CallTo(() => decoratedHandler.Handle(A<object>._)).Returns(expected); var sut = new ValidationAwareQueryHandler<object, object>(validator, decoratedHandler); var query = new object(); var actual = sut.Handle(query).Result; Assert.That(actual, Is.EqualTo(expected)); A.CallTo(() => validator.Validate(query)).MustHaveHappened(); A.CallTo(() => decoratedHandler.Handle(query)).MustHaveHappened(); }