Example #1
0
        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());
        }
Example #2
0
        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);
        }