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();
        }
Exemplo n.º 2
0
        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);
        }