def test_nested_and_filter(self): """ It should be possible to add another multi-clause filter inside of an existing multi-clause filter and have them nest correctly. """ query_builder = QueryBuilder() query_builder.and_filter( Exists('value') ) and_filter = query_builder.find_filter(And) and_filter.and_filter( Exists('nested_value') ) self.assertEquals( query_builder.to_query()['filter'], { "and": [ {"exists": {"field": "value"}}, { "and": [ {"exists": { "field": "nested_value" }} ] } ] } )
def test_add_shorthand_negation(self): query_builder = QueryBuilder() query_builder.and_filter('~exists', 'some_field') self.assertEquals(query_builder.to_query()['filter'], { 'and': [ {'not': {'exists': {'field': 'some_field'}}}, ] })
def test_add_and_shorthand(self): query_builder = QueryBuilder() query_builder.and_filter('exists', 'some_field') query_builder.and_filter('range', 'range_field', lte=5) self.assertEquals(query_builder.to_query()['filter'], { 'and': [ {'exists': {'field': 'some_field'}}, {'range': {'range_field': {'lte': 5}}} ] })
def test_query_builder_and_filter(self): query_builder = QueryBuilder() query_builder.and_filter( Exists('value') ) self.assertEquals( query_builder.to_query()['filter'], { "and": [ {"exists": {"field": "value"}} ] } )
def test_multi_and_filter(self): """ When a given filter type already exists, we smartly append to it if possible rather than clobbering an existing filter. """ query_builder = QueryBuilder() query_builder.and_filter( Exists('field_one') ) query_builder.and_filter( Exists('field_two') ) self.assertEquals( query_builder.to_query()['filter'], { "and": [ {"exists": {"field": "field_one"}}, {"exists": {"field": "field_two"}} ] } )
def test_inversion_and(self): """ Filters can return an inverted version of themselve using the `~` operator. """ query_builder = QueryBuilder() query_builder.and_filter( ~Exists('and_not_value') ) query_builder.and_filter( Exists('exists_value') ) self.assertEquals( query_builder.to_query()['filter'], { "and": [ {"not": {"exists": {"field": "and_not_value"}}}, {"exists": {"field": "exists_value"}} ] } )