Example #1
0
        public async void TestForTwoHitsOnPageOf10ResultsForGoogle()
        {
            var scraper    = new GoogleSearchScraper();
            var occurences = await scraper.GetSiteOccurencesForKeyword("online title search", "www.infotrack.com.au", 10);

            Assert.Equal(2, occurences.Count);
        }
Example #2
0
        public void GoogleSearchScraper_CanParseMultiplePages()
        {
            var SUT         = new GoogleSearchScraper(downloadService: null);
            var parsedItems = SUT.GetAllSearchResultItems(new string[] { testHtml, testHtml }).ToList();

            Assert.NotNull(parsedItems);
            Assert.True(parsedItems.Count == 8);
        }
Example #3
0
        public void GoogleSearchScraper_CanGenerateSearchUrls()
        {
            // ASSERT:
            // Scraper can generate correct list of urls required to run a search

            var SUT              = new GoogleSearchScraper(downloadService: null);
            var keyWords         = new string[] { "KEYWORD1", "KEYWORD2" };
            var maxSearchResults = 100;

            var requestUrls = SUT.GetSearchRequestUrls(keyWords, maxSearchResults).ToList();

            Assert.NotNull(requestUrls);
            Assert.True(requestUrls.Count == 10);
            Assert.True(requestUrls[0] == "https://www.google.com.au/search?q=KEYWORD1+KEYWORD2&start=0");
            Assert.True(requestUrls[1] == "https://www.google.com.au/search?q=KEYWORD1+KEYWORD2&start=10");
            Assert.True(requestUrls[9] == "https://www.google.com.au/search?q=KEYWORD1+KEYWORD2&start=90");
        }
Example #4
0
        public async Task GoogleSearchScraper_BadSearch_ReturnsEmptyList()
        {
            // ASSERT:
            // Scraper is able to handle responses with no search results.

            _downloadService
            .DownloadWebsitesParallelAsync(urls: Arg.Any <IEnumerable <string> >())
            .Returns(new List <string> {
                notFoundTestHtml
            });

            var SUT              = new GoogleSearchScraper(downloadService: _downloadService);
            var keyWords         = new string[] { "KEYWORD1", "KEYWORD2" };
            var maxSearchResults = 100;

            var searchResults = await SUT.Search(keyWords, maxSearchResults) as List <string>;

            Assert.NotNull(searchResults);
            Assert.False(searchResults.Any());
        }
Example #5
0
        public async Task GoogleSearchScraper_Search_ReturnsValidSearchResults()
        {
            // ASSERT:
            // Scraper is able to process multiple search downloads.
            // One of the results contains expected substring.

            _downloadService
            .DownloadWebsitesParallelAsync(urls: Arg.Any <IEnumerable <string> >())
            .Returns(new List <string> {
                testHtml, testHtml, testHtml
            });

            var SUT               = new GoogleSearchScraper(downloadService: _downloadService);
            var keyWords          = new string[] { "KEYWORD1", "KEYWORD2" };
            var maxSearchResults  = 100;
            var expectedSubstring = "www.sympli.com.au";

            var searchResults = await SUT.Search(keyWords, maxSearchResults) as List <string>;

            Assert.NotNull(searchResults);
            Assert.True(searchResults.Any(r => r.Contains(expectedSubstring)));
        }