private HttpClient CreateClientWithMockProxy(SearchEngineParsingResponse proxyResponse) { var mockProxy = new Mock <ISearchEngineParsingServiceProxy>(); mockProxy.Setup(p => p.GetSearchResults(It.IsAny <SearchResultsAnalysisRequest>())).Returns(proxyResponse); var factory = new WebApplicationFactory <Startup>() .WithWebHostBuilder(builder => builder.ConfigureTestServices(p => p.AddSingleton(mockProxy.Object))); var client = factory.CreateClient(); return(client); }
public async Task WhenSearchResultsAnalysisRequested_MatchingResultsWithPositionGreaterThan100AreFilteredOut() { var urlToMatch = "urlToMatch"; var request = new SearchResultsAnalysisRequest("a", "b", urlToMatch); var results = new List <SearchEngineResult>() { new SearchEngineResult(99, urlToMatch), new SearchEngineResult(100, urlToMatch), new SearchEngineResult(101, urlToMatch) }; var proxyResponse = new SearchEngineParsingResponse(results); var expectedResponse = "99, 100"; var client = CreateClientWithMockProxy(proxyResponse); var response = await client.PostAsJsonAsync(Url, request); var body = await response.Content.ReadAsAsync <SearchResultsAnalysisResponse>(); body.Results.Should().Be(expectedResponse); }
public async Task WhenSearchResultsAnalysisRequested_ThenBodyContainsCommaSeparatedListOfPositionsOfMatchingResults() { var urlToMatch = "urlToMatch"; var request = new SearchResultsAnalysisRequest("a", "b", urlToMatch); var results = new List <SearchEngineResult>() { new SearchEngineResult(1, urlToMatch), new SearchEngineResult(28, urlToMatch), new SearchEngineResult(89, "") }; var proxyResponse = new SearchEngineParsingResponse(results); var expectedResponse = "1, 28"; var client = CreateClientWithMockProxy(proxyResponse); var response = await client.PostAsJsonAsync(Url, request); var body = await response.Content.ReadAsAsync <SearchResultsAnalysisResponse>(); body.Results.Should().Be(expectedResponse); }
private List <int> FilterResults(SearchResultsAnalysisRequest request, SearchEngineParsingResponse parsingResponse) { return(parsingResponse.Results.Where(p => p.Result == request.UrlToMatch).Select(p => p.Position).ToList()); }
private SearchResultsAnalysisResponse AnalyseResponse(SearchResultsAnalysisRequest request, SearchEngineParsingResponse parsingResponse) { var filteredResults = FilterResults(request, parsingResponse); var limitedResults = LimitResults(filteredResults); var formattedResult = FormatResult(limitedResults); CacheResult(request, formattedResult); return(new SearchResultsAnalysisResponse(formattedResult)); }