Example #1
0
        public async Task RssService_FetchesFeedAsync_FeedItemsListHasEntries()
        {
            var expectedNumberOfItems = 2;
            var service = new RssService(_rssHttpClientFactory);

            var document = new XDocument();
            var xElement = new XElement("channel");

            document.Add(xElement);
            xElement.Add(
                CreateRssEntry("RSSTitle", "*****@*****.**", "a useful description", "Fri, 06 Apr 2018 12:51:01 +0000"),
                CreateRssEntry("RSSTitle", "*****@*****.**", "a useful description", "Fri, 06 Apr 2018 12:51:01 +0000")
                );

            _httpClient.GetStringAsync(Arg.Any <string>()).Returns(document.ToString());
            _rssHttpClientFactory.CreateHttpClient().Returns(_httpClient);

            var feedItems = await service.FetchFeedAsync(Urls.RssFeedUrl);

            Assert.IsNotEmpty(feedItems);
            Assert.AreEqual(expectedNumberOfItems, feedItems.Count);
        }
Example #2
0
        public async Task <List <FeedItem> > FetchFeedAsync(string url)
        {
            try
            {
                var result = await _rssHttpClientFactory.CreateHttpClient().GetStringAsync(url);

                var document = XDocument.Parse(result);

                var feedItems = document.Descendants("item")
                                .Select(x => new FeedItem()
                {
                    Title       = (string)x.Element("title"),
                    Link        = (string)x.Element("link"),
                    Description = (string)x.Element("description"),
                    PublishDate = DateTime.Parse((string)x.Element("pubDate"))
                }).ToList();

                return(feedItems);
            }
            catch
            {
                return(new List <FeedItem>());
            }
        }