public void SearchByExpression_ShouldReturnResponse_WhenDataIsAvailable()
        {
            var term = "java";

            var _handler       = new Mock <IHttpHandler>();
            var _configuration = IntialMockConfiguration();
            var _gateway       = new GoogleSearchEngineGateway(_configuration.Object, _handler.Object);

            var response = new HttpResponseMessage
            {
                StatusCode = System.Net.HttpStatusCode.OK,
                Content    = new StringContent("{\n \"kind\": \"Custom\",\n \"searchInformation\":{\n \"totalResults\":\"1500\",\n \"searchTime\":0.123 \n } \n}")
            };

            var expected = new GoogleResponseDto
            {
                Kind = "Custom",
                SearchInformation = new SearchInformationDto
                {
                    SearchTime   = 0.123,
                    TotalResults = "1500"
                }
            };

            _handler.Setup(s => s.GetAsync(It.IsAny <string>())).Returns(Task.FromResult(response));

            var actual = _gateway.SearchByExpression(term);

            actual.Should().BeEquivalentTo(expected);
        }
示例#2
0
        public static SearchResult ToSearchResultModel(this GoogleResponseDto response, string term, string engine)
        {
            var googleResult = new SearchResult();

            googleResult.Result       = Convert.ToInt64(response.SearchInformation.TotalResults);
            googleResult.EngineName   = engine;
            googleResult.TermToSearch = term;
            return(googleResult);
        }
        public void Search_ShouldThrowException_WhenResponseIsNull()
        {
            var term = "java";
            GoogleResponseDto response = null;

            _gateway.Setup(g => g.SearchByExpression(It.IsAny <string>())).Returns(response);

            Action act = () => _searchEngine.Search(term);

            act.Should().Throw <Exception>().And.Message.Should().Be("Quota exceeded for quota metric 'Queries' and limit 'Queries per day' of service 'customsearch.googleapis.com'");
        }
示例#4
0
        public void SearchEngineResults_ShouldReturnResults_WhenGivenValidTerms()
        {
            string[] terms    = { ".net", "java" };
            var      expected = new List <SearchResult>()
            {
                new SearchResult {
                    EngineName = "Google", Result = 1500, TermToSearch = ".net"
                },
                new SearchResult {
                    EngineName = "Bing", Result = 1000, TermToSearch = ".net"
                },
                new SearchResult {
                    EngineName = "Google", Result = 1500, TermToSearch = "java"
                },
                new SearchResult {
                    EngineName = "Bing", Result = 1000, TermToSearch = "java"
                }
            };

            var bingResponse = new BingResponseDto
            {
                WebPages = new WebPagesDto {
                    TotalEstimatedMatches = 1000, WebSearchUrl = "SomeUrl"
                },
                _Type = "Custom"
            };

            var googleResponse = new GoogleResponseDto
            {
                Kind = "CustomSerch",
                SearchInformation = new SearchInformationDto {
                    SearchTime = 0.123, TotalResults = "1500"
                }
            };

            _bingGateway.Setup(s => s.SearchByExpression(".net")).Returns(bingResponse);
            _bingGateway.Setup(s => s.SearchByExpression("java")).Returns(bingResponse);

            _googleGateway.Setup(s => s.SearchByExpression(".net")).Returns(googleResponse);
            _googleGateway.Setup(s => s.SearchByExpression("java")).Returns(googleResponse);

            var actual = _manager.SearchEngineResults(terms);

            actual.Should().BeEquivalentTo(expected);
        }
示例#5
0
        public void ToSearchResultModel_ShouldMapSearchInformationTotalResultsToResult_WhenProcessingGoogleResponse()
        {
            var term            = ".net";
            var engine          = "Google";
            var bingResponseDto = new GoogleResponseDto
            {
                SearchInformation = new SearchInformationDto {
                    TotalResults = "1000"
                }
            };

            var expected = new SearchResult
            {
                EngineName   = engine,
                Result       = 1000,
                TermToSearch = term
            };

            var actual = bingResponseDto.ToSearchResultModel(term, engine);

            actual.Should().BeEquivalentTo(expected);
        }
        public void Search_ShouldReturnSearchReturnModel_WhenGivenATerm()
        {
            var term     = "java";
            var expected = new SearchResult
            {
                EngineName   = "Google",
                TermToSearch = term,
                Result       = 1500
            };

            var response = new GoogleResponseDto
            {
                Kind = "CustomSearch#Search",
                SearchInformation = new SearchInformationDto {
                    SearchTime = 0.123, TotalResults = "1500"
                }
            };

            _gateway.Setup(g => g.SearchByExpression(term)).Returns(response);

            var actual = _searchEngine.Search(term);

            actual.Should().BeEquivalentTo(expected);
        }