Example #1
0
 def test_nested_or_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.or_filter(
         Exists('value')
     )
     or_filter = query_builder.find_filter(Or)
     or_filter.or_filter(
         Exists('nested_value')
     )
     self.assertEquals(
         query_builder.to_query()['filter'],
         {
             "or": [
                 {"exists": {"field": "value"}},
                 {
                     "or": [
                         {"exists": {
                             "field": "nested_value"
                         }}
                     ]
                 }
             ]
         }
     )
Example #2
0
 def test_add_or_shorthand(self):
     query_builder = QueryBuilder()
     query_builder.or_filter('range', 'range_field', gte=5)
     self.assertEquals(query_builder.to_query()['filter'], {
         'or': [
             {'range': {'range_field': {'gte': 5}}}
         ]
     })
Example #3
0
 def test_inversion_or(self):
     """
     Filters can return an inverted version of themselve using the `~`
     operator.
     """
     query_builder = QueryBuilder()
     query_builder.or_filter(
         ~Exists('and_not_value')
     )
     query_builder.or_filter(
         Exists('exists_value')
     )
     self.assertEquals(
         query_builder.to_query()['filter'],
         {
             "or": [
                 {"not": {"exists": {"field": "and_not_value"}}},
                 {"exists": {"field": "exists_value"}}
             ]
         }
     )