public async Task PopulateIndexAsyncTest(int statusCode) { //Arrange or configure var dummyCollectionOfData = DummyJobProfileIndex.GenerateJobProfileIndexDummyCollection("test", 5); A.Dummy <IndexBatch <JobProfileIndex> >(); var azOpResponse = new AzureOperationResponse <DocumentIndexResult> { Body = new DocumentIndexResult(new List <IndexingResult> { new IndexingResult(statusCode: statusCode, succeeded: statusCode < 400) }) }; A.CallTo(() => fakeIndexClient.Documents).Returns(fakeDocuments); A.CallTo(() => fakeDocuments.IndexWithHttpMessagesAsync( A <IndexBatch <JobProfileIndex> > ._, A <SearchRequestOptions> ._, A <Dictionary <string, List <string> > > ._, A <CancellationToken> ._)) .Returns(azOpResponse); var azSearchService = new AzSearchService <JobProfileIndex>(fakeSearchClient, fakeIndexClient, fakeSuggesterBuilder, policy, fakeWeightingBuilder); await azSearchService.PopulateIndexAsync(dummyCollectionOfData); A.CallTo(() => fakeIndexClient.Documents).MustHaveHappened(); A.CallTo(() => fakeDocuments.IndexWithHttpMessagesAsync( A <IndexBatch <JobProfileIndex> > ._, A <SearchRequestOptions> ._, A <Dictionary <string, List <string> > > ._, A <CancellationToken> ._)) .MustHaveHappened(statusCode > 400 ? Repeated.Exactly.Times(strategy.Retry + 1) : Repeated.Exactly.Once); }
public void GetSuggestionTest() { var fakeDocuments = A.Fake <IDocumentsOperations>(); var fakeIndexClient = A.Fake <ISearchIndexClient>(); var fakeQueryConverter = A.Fake <IAzSearchQueryConverter>(); var fakeLogger = A.Fake <IApplicationLogger>(ops => ops.Strict()); var suggestParameters = new SuggestParameters { UseFuzzyMatching = true, Top = null }; var azResponse = new AzureOperationResponse <DocumentSuggestResult <JobProfileIndex> > { Body = new DocumentSuggestResult <JobProfileIndex> { Coverage = 1, Results = new List <SuggestResult <JobProfileIndex> > { new SuggestResult <JobProfileIndex> { Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("one"), Text = "one", }, new SuggestResult <JobProfileIndex> { Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("two"), Text = "two", } } } }; A.CallTo(() => fakeQueryConverter.BuildSuggestParameters(A <SuggestProperties> ._)).Returns(suggestParameters); A.CallTo(() => fakeDocuments.SuggestWithHttpMessagesAsync <JobProfileIndex>(A <string> ._, A <string> ._, A <SuggestParameters> ._, A <SearchRequestOptions> ._, A <Dictionary <string, List <string> > > ._, A <CancellationToken> ._)) .Returns(azResponse); A.CallTo(() => fakeIndexClient.Documents).Returns(fakeDocuments); // Act var searchService = new AzSearchQueryService <JobProfileIndex>(fakeIndexClient, fakeQueryConverter, fakeLogger); searchService.GetSuggestion("searchTerm", new SuggestProperties { MaxResultCount = 20, UseFuzzyMatching = true }); A.CallTo(() => fakeQueryConverter.BuildSuggestParameters(A <SuggestProperties> ._)).MustHaveHappened(); A.CallTo(() => fakeIndexClient.Documents).MustHaveHappened(); A.CallTo(() => fakeDocuments.SuggestWithHttpMessagesAsync <JobProfileIndex>(A <string> ._, A <string> ._, A <SuggestParameters> ._, A <SearchRequestOptions> ._, A <Dictionary <string, List <string> > > ._, A <CancellationToken> ._)).MustHaveHappened(); A.CallTo(() => fakeQueryConverter.ConvertToSuggestionResult(A <DocumentSuggestResult <JobProfileIndex> > ._, A <SuggestProperties> ._)).MustHaveHappened(); }
public void TitleAsPriorityTest(string searchTerm, string expectedFirstResult) { var mannipulator = new JobProfileSearchManipulator(); SearchResult <Data.Model.JobProfileIndex> data = new SearchResult <JobProfileIndex> { Results = DummyJobProfileIndex.GenerateJobProfileResultItemDummyCollectionWithOrderPicker("Test") }; SearchProperties searchProperties = new SearchProperties { Page = 1 }; var result = mannipulator.Reorder(data, searchTerm, searchProperties); result.Results.First().ResultItem.Title.Should().Be(expectedFirstResult); }
public void ReorderAlternativeTitleTest(string searchTitle, int page, string expectedFirstResult) { var mannipulator = new JobProfileSearchManipulator(); SearchResult <Data.Model.JobProfileIndex> data = new SearchResult <JobProfileIndex> { Results = DummyJobProfileIndex.GenerateJobProfileResultItemDummyCollection("Test", 10, 1) }; SearchProperties searchProperties = new SearchProperties { Page = page }; var result = mannipulator.Reorder(data, searchTitle, searchProperties); result.Results.First().ResultItem.AlternativeTitle.First().Should().Be(expectedFirstResult); }
public void ConvertResultTest() { var properties = new SearchProperties { Count = 2, FilterBy = "filterby", Page = 3, SearchFields = new[] { "Field1", "Field2" }, UseRawSearchTerm = true }; var indexResult = new DocumentSearchResult <JobProfileIndex> { Count = 101, Results = new List <Microsoft.Azure.Search.Models.SearchResult <JobProfileIndex> > { new Microsoft.Azure.Search.Models.SearchResult <JobProfileIndex> { Score = 1, Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("one") }, new Microsoft.Azure.Search.Models.SearchResult <JobProfileIndex> { Score = 1.2, Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("two") }, } }; var queryConverter = new AzSearchQueryConverter(); var result = queryConverter.ConvertToSearchResult(indexResult, properties); result.Count.Should().Be(indexResult.Count); //Count = result.Count, result.Results.First().Rank.Should().Be(5); //Results = result.ToSearchResultItems(properties) result.Results.First().ResultItem .Should().BeEquivalentTo(DummyJobProfileIndex.GenerateJobProfileIndexDummy("one")); //Results = result.ToSearchResultItems(properties) result.Results.Last().Rank.Should().Be(6); //Results = result.ToSearchResultItems(properties) result.Results.Last().ResultItem .Should().BeEquivalentTo(DummyJobProfileIndex.GenerateJobProfileIndexDummy("two")); //Results = result.ToSearchResultItems(properties) }
public void ConvertToSuggestionResultTest() { var suggestResult = new DocumentSuggestResult <JobProfileIndex> { Coverage = 1, Results = new List <SuggestResult <JobProfileIndex> > { new SuggestResult <JobProfileIndex> { Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("one"), Text = "one" }, new SuggestResult <JobProfileIndex> { Document = DummyJobProfileIndex.GenerateJobProfileIndexDummy("two"), Text = "two" } } }; var properties = new SuggestProperties { MaxResultCount = 5, UseFuzzyMatching = true }; var queryConverter = new AzSearchQueryConverter(); var result = queryConverter.ConvertToSuggestionResult(suggestResult, properties); result.Coverage.Should().Be(1); result.Results.Count().Should().Be(suggestResult.Results.Count()); result.Results.First().Index.Should().BeEquivalentTo(DummyJobProfileIndex.GenerateJobProfileIndexDummy("one")); result.Results.First().MatchedSuggestion.Should().Be("one"); result.Results.Last().Index.Should().BeEquivalentTo(DummyJobProfileIndex.GenerateJobProfileIndexDummy("two")); result.Results.Last().MatchedSuggestion.Should().Be("two"); }