public async void CreateTrackerAsync_CorrectParametersAreProvided_TrackerMustBeCreated(bool temporary)
        {
            //prepare
            var trackername   = "trackername";
            var subscriber1   = "subscriber1";
            var subscriber2   = "subscriber2";
            var retrycount    = 10;
            var prefetchcount = 5;

            var targetSubscriberNames = new List <string>()
            {
                subscriber1, subscriber2
            };

            var trackingRoutingKeys = new List <string>
            {
                string.Concat("ok.", subscriber1),
                string.Concat("ok.", subscriber2),
                string.Concat("deadletter.", subscriber1),
                string.Concat("deadletter.", subscriber2)
            };

            _trackerNamingConvensionController.Setup(x => x.GetTrackerQueueName(trackername))
            .Returns((string queueName) => string.Concat("tracking.", trackername));

            _trackerNamingConvensionController
            .Setup(x => x.GetTrackerQueueRoutingKeys(new List <string> {
                subscriber1, subscriber2
            }))
            .Returns((IEnumerable <string> subscribersNames) => new List <string>(trackingRoutingKeys));

            var mockSubscriber = new Mock <ISubscriber>();



            var subscriberFactoryHasBeenCalledWithCorrectParameters = false;

            _subscriberFactory.Setup(x => x.CreateSubscriberAsync(string.Concat("tracking.", trackername), temporary,
                                                                  trackingRoutingKeys, retrycount,
                                                                  prefetchcount, It.IsAny <TrackingEventsSubscriptionSelector>()))
            .Returns((string name, bool temp, IEnumerable <string> routings, int retry, int prefetch,
                      ISubscriptionSelector subscriptionSelector) =>
            {
                subscriberFactoryHasBeenCalledWithCorrectParameters = true;
                return(Task.FromResult(mockSubscriber.Object));
            });

            //act

            ITracker tracker =
                await _createDefaultTrackerFactoryFunc()
                .CreateTrackerAsync(trackername, temporary, targetSubscriberNames, retrycount, prefetchcount);

            //check
            subscriberFactoryHasBeenCalledWithCorrectParameters.Should().BeTrue();
            DefaultTracker actualTracker = (DefaultTracker)tracker;

            actualTracker.Should().NotBeNull();
        }
Example #2
0
        public void Subscribe_SubscriptionsAreProvided_EventTypesAreAdjustedAndSubscriptionsAreApplied()
        {
            //prepare

            var mockSubscriber = new Mock <ISubscriber>();

            IDictionary <string, ISubscription> actualSubscriptions = null;

            mockSubscriber.Setup(x => x.Subscribe(It.IsAny <IDictionary <string, ISubscription> >()))
            .Callback <IDictionary <string, ISubscription> > (
                (subscriptions) => { actualSubscriptions = subscriptions; });

            var mockModelNamingConventionController = new Mock <IModelNamingConventionController>();

            mockModelNamingConventionController.Setup(x => x.GetDeadLetterQueueMessageEventType(It.IsAny <string>()))
            .Returns((string subscriberName) => string.Concat("deadletter.", subscriberName));
            mockModelNamingConventionController.Setup(x => x.GetTrackingMessageEventType(It.IsAny <string>()))
            .Returns((string originalEventType) => string.Concat("ok.", originalEventType));
            IModelNamingConventionController defaultNamingConvensionController = mockModelNamingConventionController.Object;

            DefaultTracker tracker = new DefaultTracker(mockSubscriber.Object, defaultNamingConvensionController);

            //act
            IDictionary <string, ISubscription> successfulProcessingSubscriptions = new Dictionary <string, ISubscription>();
            IDictionary <string, ISubscription> failedProcessingSubscriptions     = new Dictionary <string, ISubscription>();

            string eventType1 = "eventType1";
            string eventType2 = "eventType2";

            var mockEventType1SuccessfulSubscription = new Mock <ISubscription>();
            var mockEventType2SuccessfulSubscription = new Mock <ISubscription>();
            var mockEventType1FailedSubscription     = new Mock <ISubscription>();
            var mockEventType2FailedfulSubscription  = new Mock <ISubscription>();

            successfulProcessingSubscriptions.Add(eventType1, mockEventType1SuccessfulSubscription.Object);
            successfulProcessingSubscriptions.Add(eventType2, mockEventType2SuccessfulSubscription.Object);

            failedProcessingSubscriptions.Add(eventType1, mockEventType1FailedSubscription.Object);
            failedProcessingSubscriptions.Add(eventType2, mockEventType2FailedfulSubscription.Object);

            tracker.Subscribe(successfulProcessingSubscriptions, failedProcessingSubscriptions);

            //check
            IDictionary <string, ISubscription> expecteEffectiveSubscriptions = new Dictionary <string, ISubscription>();

            expecteEffectiveSubscriptions.Add(defaultNamingConvensionController.GetTrackingMessageEventType(eventType1),
                                              mockEventType1SuccessfulSubscription.Object);
            expecteEffectiveSubscriptions.Add(defaultNamingConvensionController.GetTrackingMessageEventType(eventType2),
                                              mockEventType2SuccessfulSubscription.Object);

            expecteEffectiveSubscriptions.Add(defaultNamingConvensionController.GetDeadLetterQueueMessageEventType(eventType1),
                                              mockEventType1FailedSubscription.Object);
            expecteEffectiveSubscriptions.Add(defaultNamingConvensionController.GetDeadLetterQueueMessageEventType(eventType2),
                                              mockEventType2FailedfulSubscription.Object);

            expecteEffectiveSubscriptions.ShouldBeEquivalentTo(actualSubscriptions);
        }
Example #3
0
        public void UnSubscribe_UnSubscribeFromInternalSubscriber()
        {
            //prepare

            var mockSubscriber = new Mock <ISubscriber>();

            var mockModelNamingConventionController = new Mock <IModelNamingConventionController>();
            IModelNamingConventionController defaultModelNamingConventionController = mockModelNamingConventionController.Object;

            DefaultTracker tracker = new DefaultTracker(mockSubscriber.Object, defaultModelNamingConventionController);

            //act

            tracker.Dispose();

            //check
            mockSubscriber.Verify(v => v.Dispose(), Times.Once);
        }