public void RunExecutesPublishersWhenConditionIsMet()
        {
            var result         = GenerateResultMock();
            var logger         = mocks.Create <ILogger>().Object;
            var childPublisher = mocks.Create <ITask>(MockBehavior.Strict).Object;

            Mock.Get(result).Setup(_result => _result.Clone()).Returns((IIntegrationResult)null).Verifiable();
            Mock.Get(result).Setup(_result => _result.Merge(It.IsAny <IIntegrationResult>())).Verifiable();
            Mock.Get(childPublisher).Setup(_childPublisher => _childPublisher.Run(null)).Verifiable();
            var publisher = new ConditionalPublisher
            {
                Logger = logger,
                Tasks  = new ITask[] {
                    childPublisher
                },
                Conditions = new IntegrationStatus[] {
                    IntegrationStatus.Success
                }
            };

            result.Status = IntegrationStatus.Success;
            publisher.Run(result);

            mocks.Verify();
        }
        public void RunExecutesPublishersWhenConditionIsMet()
        {
            var result         = GenerateResultMock();
            var logger         = mocks.DynamicMock <ILogger>();
            var childPublisher = mocks.StrictMock <ITask>();

            Expect.Call(() => { childPublisher.Run(result); });
            var publisher = new ConditionalPublisher
            {
                Logger = logger,
                Tasks  = new ITask[] {
                    childPublisher
                },
                Conditions = new IntegrationStatus[] {
                    IntegrationStatus.Success
                }
            };

            mocks.ReplayAll();

            result.Status = IntegrationStatus.Success;
            publisher.Run(result);

            mocks.VerifyAll();
        }
        public void RunDoesNotExecutePublishersWhenConditionIsNotMet()
        {
            var result         = GenerateResultMock();
            var logger         = mocks.Create <ILogger>().Object;
            var childPublisher = mocks.Create <ITask>(MockBehavior.Strict).Object;
            var publisher      = new ConditionalPublisher
            {
                Logger = logger,
                Tasks  = new ITask[] {
                    childPublisher
                },
                Conditions = new IntegrationStatus[] {
                    IntegrationStatus.Success
                }
            };

            result.Status = IntegrationStatus.Failure;
            publisher.Run(result);

            mocks.Verify();
        }