public void GivenASearchCriteriaThatHasRepresentativeDataThenIGetDataReturned() { var criteria = "cov"; var hostName = ConfigurationManager.AppSettings.Get("elasticsearchUrl"); var index = ConfigurationManager.AppSettings.Get("elasticsearchIndex"); var username = ConfigurationManager.AppSettings.Get("elasticsearchUsername"); var password = ConfigurationManager.AppSettings.Get("elasticsearchPassword"); var client = new ElasticClientConfiguration(new Uri(hostName), username, password) .CreateClientFactory(); var searchClient = new LocationSearchClient(client, index); var result = searchClient.Search(criteria); Assert.IsNotNull(result); Assert.IsNotNull(result.Locations); Assert.IsTrue(result.Locations.Any()); }
private void AssertSearch(Func <LocationSearchClient, IEnumerable <LocationSearchResult> > searchFunc, string expectedJsonQuery) { var searchReponse = new Mock <ISearchResponse <LocationSearchResult> >(); searchReponse.Setup(s => s.Total).Returns(0); searchReponse.Setup(s => s.Documents).Returns(Enumerable.Empty <LocationSearchResult>().ToList()); searchReponse.Setup(s => s.Documents).Returns(new Mock <IReadOnlyCollection <LocationSearchResult> >().Object); Func <SearchDescriptor <LocationSearchResult>, ISearchRequest> actualSearchDescriptorFunc = null; var mockClient = new Mock <IElasticClient>(); mockClient.Setup(c => c.Search <LocationSearchResult>(It.IsAny <Func <SearchDescriptor <LocationSearchResult>, ISearchRequest> >())) .Callback <Func <SearchDescriptor <LocationSearchResult>, ISearchRequest> >(d => actualSearchDescriptorFunc = d) .Returns(searchReponse.Object); var mockFactory = new Mock <IElasticClientFactory>(); mockFactory.Setup(f => f.CreateClient()).Returns(mockClient.Object); var sut = new LocationSearchClient(mockFactory.Object, "locations"); var response = searchFunc(sut); var baseSearchDescriptor = new SearchDescriptor <LocationSearchResult>(); var query = actualSearchDescriptorFunc(baseSearchDescriptor); var elasticClient = new ElasticClient(); var stream = new MemoryStream(); elasticClient.RequestResponseSerializer.Serialize(query, stream); var actualJsonQuery = System.Text.Encoding.UTF8.GetString(stream.ToArray()); var actualJsonQueryJToken = JToken.Parse(actualJsonQuery); var expectedJsonQueryJToken = JToken.Parse(expectedJsonQuery); actualJsonQueryJToken.Should().BeEquivalentTo(expectedJsonQueryJToken); }