Ejemplo n.º 1
0
        private int ParsePoints(NewsItem currentNew, IElement row)
        {
            if (newsFieldsParser.TryParsePoints(row.QuerySelector($".score").TextContent, out int points))
            {
                return(points);
            }

            return(0);
        }
        public async Task InitializeAsync()
        {
            var html = await File.ReadAllTextAsync("./hackernewsHtml.html");

            var context = BrowsingContext.New(Configuration.Default);

            document = await context.OpenAsync(req => req.Content(html));

            pageLoader = NSubstitute.Substitute.For <IAngleSharpPageLoader>();
            pageLoader.LoadPage(Arg.Any <string>()).Returns(document);
            hackerNewsFieldsParser = Substitute.For <INewsParser>();
            hackerNewsFieldsParser.ParseTitle(Arg.Any <string>()).Returns("Title");
            hackerNewsFieldsParser.ParseUser(Arg.Any <string>()).Returns("User");
            hackerNewsFieldsParser.TryParseUrl(Arg.Any <string>(), out Arg.Any <Uri>())
            .Returns(x => {
                x[1] = new Uri("http://test.com");
                return(true);
            });
            hackerNewsFieldsParser.TryParsePoints(Arg.Any <string>(), out Arg.Any <int>())
            .Returns(x => {
                x[1] = 10;
                return(true);
            });
            hackerNewsFieldsParser.TryParseRank(Arg.Any <string>(), out Arg.Any <int>())
            .Returns(x => {
                x[1] = 20;
                return(true);
            });
            hackerNewsFieldsParser.TryParseComments(Arg.Any <string>(), out Arg.Any <int>())
            .Returns(x => {
                x[1] = 30;
                return(true);
            });

            documentParser = new HackerNewsHtmlDocumentParser(hackerNewsFieldsParser);
        }