def test_multi_script_id(self): query_builder = QueryBuilder() query_builder.add_filter(ScriptID( 'name', 'script_id', {"key": 0.5} )) query_builder.add_filter(ScriptID( 'name_two', 'script_id_two', {"key_two": 0.4} )) self.assertEquals( query_builder.to_query()['filter'], { 'name': { "script_id": "script_id", "lang": "groovy", "params": { "key": 0.5 } }, 'name_two': { "script_id": "script_id_two", "lang": "groovy", "params": { "key_two": 0.4 } } } )
def test_empty_serialization(self): query_builder = QueryBuilder() # And filter with no nested clauses is empty. and_filter = And() query_builder.add_filter(and_filter) self.assertEqual( {}, query_builder.to_query()['filter'] )
def test_terms(self): query_builder = QueryBuilder() query_builder.add_filter(Terms( 'field', 0.5 )) self.assertEquals( query_builder.to_query()['filter'], { "terms": {"field": 0.5} } )
def test_filter_clobber(self): query_builder = QueryBuilder() query_builder.add_filter(Exists('value')) self.assertEquals( query_builder.to_query()['filter'], {"exists": {"field": "value"}}, ) query_builder.add_filter(Exists('value_two')) self.assertEquals( query_builder.to_query()['filter'], {"exists": {"field": "value_two"}}, )
def test_range_partial(self): """ If only a specific range criteria is provided, only it should appear in the final query. """ query_builder = QueryBuilder() query_builder.add_filter(Range( 'field', lte=0.5 )) self.assertEquals( query_builder.to_query()['filter'], { "range": { "field": { "lte": 0.5, } } } )
def test_range_full(self): """ All valid range comparators should be represented in the final query. """ query_builder = QueryBuilder() query_builder.add_filter(Range( 'field', lte=0.5, lt=0.6, gt=0.7, gte=0.8 )) self.assertEquals( query_builder.to_query()['filter'], { "range": { "field": { "lte": 0.5, "lt": 0.6, "gt": 0.7, "gte": 0.8 } } } )