private int ParseComments(NewsItem currentNew, IElement row) { if (newsFieldsParser.TryParseComments(row.QuerySelectorAll("a").LastOrDefault().TextContent, out int comments)) { return(comments); } 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); }