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);
        }
Example #5
0
 public SearchRepository(MultiSearchEngineContext db, IEnumerable <ISearchEngine> searchEngines)
 {
     this.db            = db;
     this.searchEngines = searchEngines;
 }