public void UnsubscribeStopsEachThePriceListener()
        {
            // Arrange
            var mockNewsListener  = MockRepository.GenerateMock <IStreamingListener <NewsDTO> >();
            var mockNewsListener2 = MockRepository.GenerateMock <IStreamingListener <NewsDTO> >();

            _mockLsCityindexStreamingConnection.Expect(x => x.BuildNewsHeadlinesListener(Arg <string> .Is.Anything))
            .Return(mockNewsListener)
            .Repeat.Once();

            _mockLsCityindexStreamingConnection.Expect(x => x.BuildNewsHeadlinesListener(Arg <string> .Is.Anything))
            .Return(mockNewsListener2)
            .Repeat.Once();

            mockNewsListener.Expect(x => x.Stop());
            mockNewsListener2.Expect(x => x.Stop());

            // Act
            var newsStreamListener = new NewsStream(_mockLsCityindexStreamingConnection);

            newsStreamListener.SubscribeToNewsHeadlinesByRegion(REGION);
            newsStreamListener.SubscribeToNewsHeadlinesByRegion("anotherRegion");

            newsStreamListener.Unsubscribe();

            // Assert
            _mockLsCityindexStreamingConnection.VerifyAllExpectations();
            mockNewsListener.VerifyAllExpectations();
        }
        public virtual NewsStream Create(ILsCityindexStreamingConnection lsCityindexStreamingConnection)
        {
            try
            {
                Log.Info("Creating news stream listener.");

                var newsStream = new NewsStream(lsCityindexStreamingConnection);

                return(newsStream);
            }
            catch (Exception ex)
            {
                Log.Error(ex);
                throw;
            }
        }
        /// <summary>
        /// To the news brief.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <returns>NewsBrief.</returns>
        public static NewsBrief ToNewsBrief(NewsStream input)
        {
            var result = new NewsBrief();

            result.ClusterId0   = input.ClusterId0;
            result.Description  = input.NewsArticleDescription;
            result.Id           = input.Id;
            result.Source       = input.NewsSource;
            result.ThumbnailUrl = string.IsNullOrEmpty(input.GoodDominantImageURL)
                                      ? DEFAULTNEWSURL
                                      : input.GoodDominantImageURL;
            result.Title       = input.Title;
            result.Url         = input.Url;
            result.CreatedTime = input.BuildTime;
            return(result);
        }
        public void ValidSubscribtionsAreAddedToAToNewsStreamListenerList()
        {
            // Arrange
            var mockNewsListener = MockRepository.GenerateMock <IStreamingListener <NewsDTO> >();

            _mockLsCityindexStreamingConnection.Expect(x => x.BuildNewsHeadlinesListener(Arg <string> .Is.Anything))
            .Return(mockNewsListener)
            .Repeat.Twice();

            // Act
            var newsStream = new NewsStream(_mockLsCityindexStreamingConnection);

            newsStream.SubscribeToNewsHeadlinesByRegion(REGION);
            newsStream.SubscribeToNewsHeadlinesByRegion("AnotherRegion");

            // Assert
            Assert.AreEqual(2, newsStream.Listeners.Count);
            _mockLsCityindexStreamingConnection.VerifyAllExpectations();
            mockNewsListener.VerifyAllExpectations();
        }