public void TrackingModesIsAnythingButNone()
        {
            // MockBehavior must be Strict for following test
            var activityTrackerComponentContext = new ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Body);

            ActivityTrackerMock    = new Mock <Tracking.Messaging.ActivityTracker>(MockBehavior.Strict, activityTrackerComponentContext);
            MessageBodyTrackerMock = new Mock <MessageBodyTracker>(MockBehavior.Strict, activityTrackerComponentContext);

            // method call ordering is important as only one of the first two methods, i.e. either TryCheckOutMessageBody()
            // or SetupCapture(), ensures a TrackingStream is setup
            MessageBodyTrackerMock.Setup(mbt => mbt.TryCheckOutMessageBody())
            .Callback(
                () => MessageBodyTrackerMock.Setup(mbt => mbt.SetupTracking())
                .Callback(
                    () => ActivityTrackerMock.Setup(at => at.TrackActivity())
                    .Callback(
                        () => MessageBodyTrackerMock.Setup(mbt => mbt.TryCheckInMessageBody()).Verifiable())
                    .Verifiable())
                .Verifiable())
            .Verifiable();

            var sut = CreateActivityTracker();

            sut.TrackingModes = ActivityTrackingModes.Step;

            sut.Execute(PipelineContextMock.Object, MessageMock.Object);

            ActivityTrackerMock.VerifyAll();
            MessageBodyTrackerMock.VerifyAll();
        }
        public void SetUp()
        {
            MessageMock.Setup(m => m.GetProperty(BtsProperties.InboundTransportLocation)).Returns("inbound-transport-location");

            var activityTrackerContext = new ActivityTracker.Context(PipelineContextMock.Object, MessageMock.Object, ActivityTrackingModes.Body);

            _activityTrackerFactory = Tracking.Messaging.ActivityTracker.Factory;
            ActivityTrackerMock     = new Mock <Tracking.Messaging.ActivityTracker>(activityTrackerContext);
            Tracking.Messaging.ActivityTracker.Factory = context => ActivityTrackerMock.Object;

            _messageBodyTrackerFactory = MessageBodyTracker.Factory;
            MessageBodyTrackerMock     = new Mock <MessageBodyTracker>(activityTrackerContext);
            MessageBodyTracker.Factory = context => MessageBodyTrackerMock.Object;

            _trackingContextCacheInstance = TrackingContextCache.Instance;
            CacheMock = new Mock <TrackingContextCache>(MockBehavior.Strict);
            TrackingContextCache.Instance = CacheMock.Object;

            _trackingResolverFactory = TrackingResolver.Factory;
            TrackingResolverMock     = new Mock <TrackingResolver>(MessageMock.Object);
            TrackingResolver.Factory = message => TrackingResolverMock.Object;
        }