public async Task <IActionResult> Index(HomePageViewModel model) { var searchResults = await webSearcherService.Search(model.SearchTerm); model.SearchResults = searchResults.Results.OrderByDescending(x => x.Source.Count).ThenBy(x => x.Title); model.Errors = searchResults.ErrorList; return(View(model)); }
public async Task When_null_search_term_is_passed_an_error_is_returned() { var webSearcherService = new WebSearcherService(_querySearcherService.Object); var results = await webSearcherService.Search(null); Assert.AreEqual(1, results.ErrorList.Count); Assert.AreEqual(0, results.Results.Count()); }
public async Task When_searching_any_errors_are_caught_and_handled() { var q = new Mock <ISearchEngineQuery>(); q.Setup(x => x.Search(It.IsAny <string>())).Returns(Task.FromException <IEnumerable <SearchResultItem> >(new Exception("Kaboom"))); _searchers.Add(q.Object); var webSearcherService = new WebSearcherService(_querySearcherService.Object); var results = await webSearcherService.Search("Test"); Assert.AreEqual(1, results.ErrorList.Count); Assert.AreEqual(0, results.Results.Count()); }
public async Task When_searching_successful_results_are_returned() { IEnumerable <SearchResultItem> searchReturn = new List <SearchResultItem> { new SearchResultItem("Test", "www.test.com", "Google") }; var q = new Mock <ISearchEngineQuery>(); q.Setup(x => x.Search(It.IsAny <string>())).Returns(Task.FromResult(searchReturn)); _searchers.Add(q.Object); var webSearcherService = new WebSearcherService(_querySearcherService.Object); var results = await webSearcherService.Search("Test"); Assert.AreEqual(0, results.ErrorList.Count); Assert.AreEqual(1, results.Results.Count()); var searchResult = results.Results.First(); Assert.AreEqual("Test", searchResult.Title); }
public async Task When_searching_multiple_searchers_and_one_errors_other_searchers_still_complete_and_return_results() { IEnumerable <SearchResultItem> searchReturn = new List <SearchResultItem> { new SearchResultItem("Test", "www.test.com", "Google") }; var goodSearcher = new Mock <ISearchEngineQuery>(); goodSearcher.Setup(x => x.Search(It.IsAny <string>())).Returns(Task.FromResult(searchReturn)); _searchers.Add(goodSearcher.Object); var badSearcher = new Mock <ISearchEngineQuery>(); badSearcher.Setup(x => x.Search(It.IsAny <string>())).Returns(Task.FromException <IEnumerable <SearchResultItem> >(new Exception("Kaboom"))); _searchers.Add(badSearcher.Object); var webSearcherService = new WebSearcherService(_querySearcherService.Object); var results = await webSearcherService.Search("Test"); Assert.AreEqual(1, results.ErrorList.Count); Assert.AreEqual(1, results.Results.Count()); }