Example #1
0
 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"
                         }}
                     ]
                 }
             ]
         }
     )
Example #2
0
 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'}}},
         ]
     })
Example #3
0
 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}}}
         ]
     })
Example #4
0
 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"}}
             ]
         }
     )
Example #5
0
 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"}}
             ]
         }
     )
Example #6
0
 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"}}
             ]
         }
     )