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