public SearchTextProcess(ISearchInitializer initializer, IDisplayerAdapter displayer) { _initializer = initializer; _displayer = displayer; _fileSearcher = ChoiceSearcher(initializer); _textSearcher = new TextSearcher(initializer.SearchedText); }
public async Task SearchById_GivenIdDoesNotReturnSearchResult_ReturnsNull() { SearchRepositorySettings searchRepositorySettings = new SearchRepositorySettings { SearchKey = string.Empty, SearchServiceName = string.Empty }; ISearchInitializer searchInitializer = Substitute.For <ISearchInitializer>(); ISearchIndexClient searchIndexClient = Substitute.For <ISearchIndexClient>(); AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > documentSearchResult = new AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > { Body = new DocumentSearchResult <SpecificationIndex>(null, null, null, null, null) }; IDocumentsOperations documentsOperations = Substitute.For <IDocumentsOperations>(); documentsOperations.SearchWithHttpMessagesAsync <SpecificationIndex>(Arg.Any <string>(), Arg.Any <SearchParameters>()).Returns(Task.FromResult(documentSearchResult)); ISearchServiceClient searchServiceClient = Substitute.For <ISearchServiceClient>(); searchIndexClient.Documents.Returns(documentsOperations); SearchRepository <SpecificationIndex> searchRepository = new SearchRepository <SpecificationIndex>(searchRepositorySettings, searchInitializer, searchServiceClient, searchIndexClient); string notFoundId = "notFound"; SpecificationIndex specificationIndex = await searchRepository.SearchById(notFoundId); specificationIndex.Should().BeNull(); }
public SearchRepository(SearchRepositorySettings settings, ISearchInitializer searchInitializer = null, ISearchServiceClient searchServiceClient = null, ISearchIndexClient searchIndexClient = null) { _indexName = typeof(T).Name.ToLowerInvariant(); _settings = settings ?? throw new ArgumentNullException(nameof(settings)); _searchInitializer = searchInitializer ?? new SearchInitializer(_settings.SearchServiceName, _settings.SearchKey, null); _searchServiceClient = searchServiceClient ?? new SearchServiceClient(_settings.SearchServiceName, new SearchCredentials(_settings.SearchKey)); _searchIndexClient = searchIndexClient; }
public void SearchById_GivenIdReturnsSearchResult_TreatsMultipleResultsAsAnException() { string existingId = "existingId"; SearchRepositorySettings searchRepositorySettings = new SearchRepositorySettings { SearchKey = string.Empty, SearchServiceName = string.Empty }; ISearchInitializer searchInitializer = Substitute.For <ISearchInitializer>(); ISearchIndexClient searchIndexClient = Substitute.For <ISearchIndexClient>(); Microsoft.Azure.Search.Models.SearchResult <SpecificationIndex> specificationIndexSearchResult = new Microsoft.Azure.Search.Models.SearchResult <SpecificationIndex>(new SpecificationIndex { Id = existingId }); AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > documentSearchResult = new AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > { Body = new DocumentSearchResult <SpecificationIndex>(new[] { specificationIndexSearchResult, new Microsoft.Azure.Search.Models.SearchResult <SpecificationIndex>() }, null, null, null, null) }; IDocumentsOperations documentsOperations = Substitute.For <IDocumentsOperations>(); documentsOperations .SearchWithHttpMessagesAsync <SpecificationIndex>(Arg.Is <string>(_ => _ == $"\"{existingId}\""), Arg.Is <SearchParameters>(_ => _.SearchFields.SequenceEqual(new[] { "id" }))) .Returns(Task.FromResult(documentSearchResult)); ISearchServiceClient searchServiceClient = Substitute.For <ISearchServiceClient>(); searchIndexClient.Documents.Returns(documentsOperations); SearchRepository <SpecificationIndex> searchRepository = new SearchRepository <SpecificationIndex>(searchRepositorySettings, searchInitializer, searchServiceClient, searchIndexClient); Func <Task <SpecificationIndex> > invocation = () => searchRepository.SearchById(existingId); invocation .Should() .Throw <FailedToQuerySearchException>(); }
public async Task SearchById_GivenIdReturnsSearchResult_ReturnsResults() { string existingId = "existingId"; SearchRepositorySettings searchRepositorySettings = new SearchRepositorySettings { SearchKey = string.Empty, SearchServiceName = string.Empty }; ISearchInitializer searchInitializer = Substitute.For <ISearchInitializer>(); ISearchIndexClient searchIndexClient = Substitute.For <ISearchIndexClient>(); Microsoft.Azure.Search.Models.SearchResult <SpecificationIndex> specificationIndexSearchResult = new Microsoft.Azure.Search.Models.SearchResult <SpecificationIndex>(new SpecificationIndex { Id = existingId }); AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > documentSearchResult = new AzureOperationResponse <DocumentSearchResult <SpecificationIndex> > { Body = new DocumentSearchResult <SpecificationIndex>(new[] { specificationIndexSearchResult }, null, null, null, null) }; IDocumentsOperations documentsOperations = Substitute.For <IDocumentsOperations>(); documentsOperations .SearchWithHttpMessagesAsync <SpecificationIndex>(Arg.Is <string>(_ => _ == $"\"{existingId}\""), Arg.Is <SearchParameters>(_ => _.SearchFields.SequenceEqual(new[] { "id" }))) .Returns(Task.FromResult(documentSearchResult)); ISearchServiceClient searchServiceClient = Substitute.For <ISearchServiceClient>(); searchIndexClient.Documents.Returns(documentsOperations); SearchRepository <SpecificationIndex> searchRepository = new SearchRepository <SpecificationIndex>(searchRepositorySettings, searchInitializer, searchServiceClient, searchIndexClient); SpecificationIndex specificationIndex = await searchRepository.SearchById(existingId); specificationIndex.Should().NotBeNull(); specificationIndex.Id.Should().Be(existingId); }
private BaseFileSearcher ChoiceSearcher(ISearchInitializer initializer) { switch (initializer.SearcherType) { case FileSearcherTypes.Names: return(new SearcherByNames(initializer.FilesToSearch)); case FileSearcherTypes.Extensions: return(new SearcherByExtension(initializer.FilesToSearch)); default: throw new Exception(SEARCHER_IS_NOT_DEFINED); } }