public async Task WhenRequesting1Post_ShouldReturnTopPost()
        {
            // Arrange
            SetupHackerNewsServerResponse("HackerNews-01.html", 1);

            // Act
            var result = await _hackerNewsScraper.GetTopPostsAsync(1);

            // Assert
            Assert.That(result.Count(), Is.EqualTo(1));

            var topPost = result.Single();

            Assert.That(topPost.Author, Is.EqualTo("mindgam3"));
            Assert.That(topPost.Comments, Is.EqualTo(42));
            Assert.That(topPost.Points, Is.EqualTo(120));
            Assert.That(topPost.Rank, Is.EqualTo(1));
            Assert.That(topPost.Title, Is.EqualTo("New Cambridge Analytica Leaks"));
            Assert.That(topPost.Uri.AbsoluteUri, Is.EqualTo("https://techcrunch.com/2020/01/06/facebook-data-misuse-and-voter-manipulation-back-in-the-frame-with-latest-cambridge-analytica-leaks/"));
        }
Пример #2
0
        public async Task ScrapeAsync()
        {
            if (_scraperOptions.Posts == null)
            {
                throw new ArgumentNullException("Please provide a value for posts");
            }

            var results = await _hackerNewsScraper.GetTopPostsAsync(_scraperOptions.Posts.Value);

            var serializerSettings = new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            };

            Console.WriteLine(JsonConvert.SerializeObject(results, Formatting.Indented, serializerSettings));
        }