Пример #1
0
        public async Task <IEnumerable <INews> > GetNewsAsync()
        {
            try
            {
                IEnumerable <INewsProvider> newsProviders = await _dataProviderFactory.BuildNewsProvidersAsync();

                if (newsProviders == null || newsProviders.Any() == false)
                {
                    return(new List <INews>(0));
                }

                Task <IEnumerable <INews> >[] getNewsFromNewsProviderTasks = newsProviders.Select(GetNewsFromNewsProviderAsync).ToArray();
                await Task.WhenAll(getNewsFromNewsProviderTasks);

                return(getNewsFromNewsProviderTasks
                       .Where(task => task.IsFaulted == false)
                       .SelectMany(task => task.Result)
                       .OrderByDescending(news => news.Timestamp)
                       .ToList());
            }
            catch (AggregateException ex)
            {
                await _exceptionHandler.HandleAsync(ex);
            }
            catch (Exception ex)
            {
                await _exceptionHandler.HandleAsync(ex);
            }
            return(new List <INews>(0));
        }
Пример #2
0
        public async Task BuildNewsProvidersAsync_WhenCalled_ReturnsNewsProviders()
        {
            IDataProviderFactory sut = CreateSut();

            IEnumerable <INewsProvider> newsProviders = await sut.BuildNewsProvidersAsync();

            Assert.IsNotNull(newsProviders);
            Assert.AreEqual(5, newsProviders.Count());

            AssertNewsProvider(newsProviders.ElementAt(0), "DR", "https://www.dr.dk/nyheder/service/feeds/allenyheder");
            AssertNewsProvider(newsProviders.ElementAt(1), "TV 2 Lorry", "https://www.tv2lorry.dk/rss");
            AssertNewsProvider(newsProviders.ElementAt(2), "Børsen", "https://borsen.dk/rss");
            AssertNewsProvider(newsProviders.ElementAt(3), "Computerworld", "https://www.computerworld.dk/rss/all");
            AssertNewsProvider(newsProviders.ElementAt(4), "Version2", "https://www.version2.dk/it-nyheder/rss");
        }