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 decoratedCommandHandler = A.Fake <ICommandHandler <object> >(); var sut = new ValidationAwareCommandHandler <object>(validator, decoratedCommandHandler); var command = new object(); AssertEx.TaskThrows <ValidationException>(() => sut.Handle(command)); A.CallTo(() => validator.Validate(command)).MustHaveHappened(); A.CallTo(() => decoratedCommandHandler.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 decoratedCommandHandler = A.Fake <ICommandHandler <object> >(); var sut = new ValidationAwareCommandHandler <object>(validator, decoratedCommandHandler); var command = new object(); var task = sut.Handle(command); task.Wait(); A.CallTo(() => validator.Validate(command)).MustHaveHappened(); A.CallTo(() => decoratedCommandHandler.Handle(command)).MustHaveHappened(); }