I am separating my query building and query execution, so I have a QueryBuilder which returns a SearchDescriptor<Video>
So to put it into context in my Web Api Controller:
SearchDescriptor<ElasticVideo> documentQuery = _queryBuilder.BuildDocumentQuery(elasticSearchParameters);
ISearchResponse<ElasticVideo> documentResults = _videoRepository.Search(documentQuery);
But when it comes to testing the QueryBuilder I can't access any of the properties on the SearchDescriptor returned in order to validate my test, for example:
[Test]
public void BuildDocumentQuery_WithEmptyPhrase_ReturnsProperlyFormedQueryDescriptor()
{
var elasticSearchVideoQueryBuilder = new ElasticSearchVideoQueryBuilder();
var descriptor = elasticSearchVideoQueryBuilder.BuildDocumentQuery(new ElasticSearchVideoParameters());
descriptor.// How can I get the raw query?
}
I can see in the source code that there doesn't appear to be anything to expose this? Does anyone else have a similar problem?
I don't know exactly how do you build your query, but you can cast SearchDescriptor
to ISearchRequest
to get more details.
var searchDescriptor = new SearchDescriptor<ElasticsearchProject>()
.From(0)
.Size(20)
.Query(q => q.Match(m => m.OnField(f => f.Country).Query("Country")));
var query = ((ISearchRequest) searchDescriptor).Query.Match.Query;
Assert.AreEqual("Country", query);