public void DoNotRaiseEvent_AfterQueryIsExecuted_WhenQueryHasRaiseEventAttributeAndEnabledFalse() { var query = new FakeQueryWithoutValidator(); Assert.IsAssignableFrom <IQuery <string> >(query); var eventProcessor = new Mock <IProcessEvents>(MockBehavior.Strict); eventProcessor.Setup(x => x.Raise(query)); var attribute = new RaiseEventAttribute { Enabled = false }; var decorated = new Mock <IHandleQuery <FakeQueryWithoutValidator, string> >(MockBehavior.Strict); var provider = TypeDescriptor.AddAttributes(decorated.Object.GetType(), attribute); decorated.Setup(x => x.Handle(query)).Returns("faked"); var decorator = new QueryEventProcessingDecorator <FakeQueryWithoutValidator, string>(eventProcessor.Object, () => decorated.Object); decorator.Handle(query); decorated.Verify(x => x.Handle(query), Times.Once); eventProcessor.Verify(x => x.Raise(It.IsAny <IEvent>()), Times.Never); // Clean up runtime added attributes TypeDescriptor.RemoveProvider(provider, decorated.Object.GetType()); }
public void DoNotRaiseEvent_AfterCommandIsExecuted_WhenCommandHasRaiseEventAttributeAndEnabledFalse() { var command = new FakeCommandWithoutValidator(); Assert.IsAssignableFrom <ICommand>(command); var eventProcessor = new Mock <IProcessEvents>(MockBehavior.Strict); eventProcessor.Setup(x => x.Raise(command)); var attribute = new RaiseEventAttribute { Enabled = false }; var decorated = new Mock <IHandleCommand <FakeCommandWithoutValidator> >(MockBehavior.Strict); TypeDescriptor.AddAttributes(decorated.Object.GetType(), attribute); decorated.Setup(x => x.Handle(command)); var decorator = new CommandEventProcessingDecorator <FakeCommandWithoutValidator>(eventProcessor.Object, () => decorated.Object); decorator.Handle(command); decorated.Verify(x => x.Handle(command), Times.Once); eventProcessor.Verify(x => x.Raise(It.IsAny <IEvent>()), Times.Never); }
public void RaiseEvent_AfterCommandIsExecuted_WhenCommandHasRaiseEventAttributeAndEnabledTrue() { var command = new FakeCommandWithoutValidator(); Assert.IsAssignableFrom<ICommand>(command); var eventProcessor = new Mock<IProcessEvents>(MockBehavior.Strict); eventProcessor.Setup(x => x.Raise(command)); var attribute = new RaiseEventAttribute { Enabled = true }; var decorated = new Mock<IHandleCommand<FakeCommandWithoutValidator>>(MockBehavior.Strict); TypeDescriptor.AddAttributes(decorated.Object.GetType(), attribute); decorated.Setup(x => x.Handle(command)); var decorator = new CommandEventProcessingDecorator<FakeCommandWithoutValidator>(eventProcessor.Object, () => decorated.Object); decorator.Handle(command); decorated.Verify(x => x.Handle(command), Times.Once); eventProcessor.Verify(x => x.Raise(command), Times.Once); }