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());
        }
示例#2
0
        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);
        }