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