def test_filter_can_be_instantiated_using_positional_args(): a = aggs.Filter(query.Q('term', f=42)) assert {'filter': {'term': {'f': 42}}} == a.to_dict() assert a == aggs.A('filter', query.Q('term', f=42))
def test_empty_Q_is_match_all(): q = query.Q() assert isinstance(q, query.MatchAll) assert query.MatchAll() == q
def test_bool_from_dict_issue_318(): d = {"bool": {"must_not": {"match": {"field": "value"}}}} q = query.Q(d) assert q == ~query.Match(field='value')
def test_Q_raises_error_when_passed_in_query_and_params(): q = query.Match(f='value1') with raises(Exception): query.Q(q, f='value')
def test_Q_raises_error_on_unknown_query(): with raises(Exception): query.Q('not a query', f='value')
def test_Q_constructs_simple_query_from_dict(): q = query.Q({'match': {'f': 'value'}}) assert isinstance(q, query.Match) assert {'f': 'value'} == q._params
def test_Q_raises_error_when_passed_in_dict_and_params(): with raises(Exception): query.Q({"match": {'f': 'value'}}, f='value')
def test_Q_translates_double_underscore_to_dots_in_param_names(): q = query.Q('match', comment__author='honza') assert {'comment.author': 'honza'} == q._params
def test_Q_doesn_translate_double_underscore_to_dots_in_param_names(): q = query.Q('match', comment__author='honza', _expand__to_dot=False) assert {'comment__author': 'honza'} == q._params
def test_Q_passes_query_through(): q = query.Match(f='value1') assert query.Q(q) is q
def test_Q_constructs_query_by_name(): q = query.Q('match', f='value') assert isinstance(q, query.Match) assert {'f': 'value'} == q._params
def test_inverted_query_with_must_and_must_not(): q = query.Q('bool', must=[query.Q('match', f=3), query.Q('match', f=4)], must_not=[query.Q('match', f=1), query.Q('match', f=2)]) print((~q).to_dict()) assert ~q == query.Q( 'bool', should=[ # negation of must query.Q('bool', must_not=[query.Q('match', f=3)]), query.Q('bool', must_not=[query.Q('match', f=4)]), # negation of must_not query.Q('match', f=1), query.Q('match', f=2), ])
def test_filter_can_be_instantiated_using_positional_args(): a = aggs.Filter(query.Q("term", f=42)) assert {"filter": {"term": {"f": 42}}} == a.to_dict() assert a == aggs.A("filter", query.Q("term", f=42))
def test_bool_with_different_minimum_should_match_should_not_be_combined(): q1 = query.Q('bool', minimum_should_match=2, should=[ query.Q('term', field='aa1'), query.Q('term', field='aa2'), query.Q('term', field='aa3'), query.Q('term', field='aa4') ]) q2 = query.Q('bool', minimum_should_match=3, should=[ query.Q('term', field='bb1'), query.Q('term', field='bb2'), query.Q('term', field='bb3'), query.Q('term', field='bb4') ]) q3 = query.Q('bool', minimum_should_match=4, should=[ query.Q('term', field='cc1'), query.Q('term', field='cc2'), query.Q('term', field='cc3'), query.Q('term', field='cc4') ]) q4 = q1 | q2 assert q4 == query.Bool(should=[q1, q2]) q5 = q1 | q2 | q3 assert q5 == query.Bool(should=[q1, q2, q3])
def test_function_score_with_no_function_is_boost_factor(): q = query.Q('function_score', functions=[query.SF({'weight': 20, 'filter': query.Q('term', f=42)})]) assert {'function_score': {'functions': [{'filter': {'term': {'f': 42}}, 'weight': 20}]}} == q.to_dict()
def test_function_score_with_functions(): q = query.Q('function_score', functions=[query.SF('script_score', script="doc['comment_count'] * _score")]) assert {'function_score': {'functions': [{'script_score': {'script': "doc['comment_count'] * _score"}}]}} == q.to_dict()