public async Task RepositoryReturnsDataFromDB() { var searchEngine = new Mock <ISearchEngine>(); searchEngine.Setup(x => x.GetSearchResultAsync(query)).ReturnsAsync(testViewObject); var searchEngines = new List <ISearchEngine> { searchEngine.Object }; List <SearchResultViewModel> searchResult; List <SearchResult> expectedResult; using (var context = new MultiSearchEngineContext(options)) { var repository = new SearchRepository(context, searchEngines); searchResult = (List <SearchResultViewModel>) await repository.GetFromDbAsync(query); expectedResult = await context.SearchResults.Where(r => r.Query.Contains(query)).ToListAsync(); } Assert.Equal(expectedResult.Count(), searchResult.Count()); Assert.Equal(expectedResult[0].Date, searchResult[0].Date); Assert.Equal(expectedResult[0].Query, searchResult[0].Query); Assert.Equal(expectedResult[0].SearchEngineName, searchResult[0].SearchEngineName); Assert.Equal(expectedResult[1].Date, searchResult[1].Date); Assert.Equal(expectedResult[1].Query, searchResult[1].Query); Assert.Equal(expectedResult[1].SearchEngineName, searchResult[1].SearchEngineName); }
public async Task RepositoryAddsDataIntoDB() { var testObject = new SearchResult() { Id = 1, Date = new DateTime(2020, 01, 01), Query = query, SearchEngineName = SearchEngineName.Google }; var searchEngine = new Mock <ISearchEngine>(); searchEngine.Setup(x => x.GetSearchResultAsync(query)).ReturnsAsync(testViewObject); var searchEngines = new List <ISearchEngine> { searchEngine.Object }; using (var context = new MultiSearchEngineContext(options)) { var repository = new SearchRepository(context, searchEngines); await repository.CreateAsync(testViewObject); var actualResult = context.SearchResults.FirstOrDefault(r => r.Id == 1); var actualtemResult = context.SearchResultItems.FirstOrDefault(r => r.SearchResultId == 1); Assert.Equal(testObject.Id, actualResult.Id); Assert.Equal(testObject.Date, actualResult.Date); Assert.Equal(testObject.Query, actualResult.Query); Assert.Equal(testObject.SearchEngineName, actualResult.SearchEngineName); Assert.Equal(testObject.Id, actualtemResult.SearchResultId); } }
public async Task RepositoryThrowsNotFoundException() { var searchEngine = new Mock <ISearchEngine>(); searchEngine.Setup(x => x.GetSearchResultAsync("Bye")).ThrowsAsync(new Exception("No results were found")); var searchEngines = new List <ISearchEngine> { searchEngine.Object }; using (var context = new MultiSearchEngineContext(options)) { var repository = new SearchRepository(context, searchEngines); var ex1 = await Assert.ThrowsAsync <Exception>(() => repository.GetFromDbAsync("Bye")); var ex2 = await Assert.ThrowsAsync <Exception>(() => repository.GetFromWebAsync("Bye")); Assert.Equal("No results were found", ex1.Message); Assert.Equal("No results were found", ex2.Message); } }
public async Task RepositoryReturnsResultsFromWeb() { var searchEngine = new Mock <ISearchEngine>(); searchEngine.Setup(x => x.GetSearchResultAsync(query)).ReturnsAsync(testViewObject); var searchEngines = new List <ISearchEngine> { searchEngine.Object }; SearchResultViewModel searchResult; using (var context = new MultiSearchEngineContext(options)) { var repository = new SearchRepository(context, searchEngines); searchResult = await repository.GetFromWebAsync(query); } Assert.Equal(testViewObject.ResultsList.Count(), searchResult.ResultsList.Count()); Assert.Equal(testViewObject.Date, searchResult.Date); Assert.Equal(testViewObject.Query, searchResult.Query); Assert.Equal(testViewObject.SearchEngineName, searchResult.SearchEngineName); }
public SearchRepository(MultiSearchEngineContext db, IEnumerable <ISearchEngine> searchEngines) { this.db = db; this.searchEngines = searchEngines; }