public void Given_BanlistType_And_A_BanlistUrl_Should_Return_All_Banlists_GroupedBy_Year() { // Arrange var banlistType = BanlistType.Tcg; var banlistUrl = "http://www.youtube.com"; _banlistWebPage .GetBanlistUrlList(Arg.Any <BanlistType>(), Arg.Any <string>()) .Returns(new Dictionary <string, List <Uri> > { ["2017"] = new List <Uri> { new Uri("http://www.youtube.com") } }); var htmlDocument = new HtmlDocument(); htmlDocument.DocumentNode.InnerHtml = "\"<script>wgArticleId=296,</script>\""; _htmlWebPage.Load(Arg.Any <Uri>()).Returns(htmlDocument); // Act var result = _sut.GetBanlists(banlistType, banlistUrl); // Assert result.Should().NotBeEmpty(); }
public IDictionary <int, List <int> > GetBanlists(BanlistType banlistType, string banlistUrl) { var articleIdsList = new Dictionary <int, List <int> >(); var banlistUrlsByYear = _banlistWebPage.GetBanlistUrlList(banlistType, banlistUrl); foreach (var banlist in banlistUrlsByYear) { var banlistYear = int.Parse(banlist.Key); var articleIds = new List <int>(); foreach (var url in banlist.Value) { var banlistPageHtml = _htmlWebPage.Load(url).DocumentNode.InnerHtml; Regex regex = new Regex("wgArticleId=([^,]*),"); Match match = regex.Match(banlistPageHtml); var wgArticleId = int.Parse(match.Groups[1].Value); articleIds.Add(wgArticleId); } articleIdsList.Add(banlistYear, articleIds); } return(articleIdsList); }