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(); }
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); }
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); }