@@ -33,7 +33,102 @@ def test_get_search_base():
3333 assert range_filter [params ["timestamp_field" ]]["lte" ] == params ["stop_time" ]
3434
3535def test_build_dsl_filter ():
36- pass
36+ meta = {"disabled" :False ,"negate" :False ,"alias" :None }
37+ # geo_distance with query key (built when you create a filter from the map)
38+ geo_distance = {"geo_distance" :{"distance" :"260km" ,"point" :[- 83.89 ,34.7 ]}}
39+ q = {"bool" :{"must" :[{"exists" :{"field" :"point" }},{** geo_distance }]}}
40+ filters = [{"meta" :{** meta ,"type" :"spatial_filter" },"query" :{** q }}]
41+ expected = {'filter' : [{'match_all' : {}}, {** q }], 'must_not' : []}
42+ assert elastic .build_dsl_filter (filters ) == expected
43+
44+ # geo_distance filters without query
45+ filters = [{"meta" :{** meta },** geo_distance }]
46+ expected = {'filter' : [{'match_all' : {}}, {** geo_distance }], 'must_not' : []}
47+ assert elastic .build_dsl_filter (filters ) == expected
48+
49+ # ensure disabled doesn't return a filter
50+ filters [0 ]['meta' ]['disabled' ] = True
51+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : []}
52+ assert elastic .build_dsl_filter (filters ) == expected
53+
54+ # type phrase
55+ phrase = {"match_phrase" :{"age" :"10" }}
56+ filters = [{"meta" :{** meta ,"type" :"phrase" },"query" :{** phrase }}]
57+ expected = {'filter' : [{'match_all' : {}}, {** phrase }], 'must_not' : []}
58+ assert elastic .build_dsl_filter (filters ) == expected
59+
60+ # negate phrase
61+ filters [0 ]['meta' ]['negate' ] = True
62+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** phrase }]}
63+ assert elastic .build_dsl_filter (filters ) == expected
64+
65+ # phrases
66+ q = {"bool" :{"minimum_should_match" :1 ,"should" :[{** phrase },{"match_phrase" :{"age" :"11" }}]}}
67+ filters = [{"meta" :{** meta ,"type" :"phrases" },"query" :{** q }}]
68+ expected = {'filter' : [{'match_all' : {}}, {** q }], 'must_not' : []}
69+ assert elastic .build_dsl_filter (filters ) == expected
70+
71+ # negate phrases
72+ filters [0 ]['meta' ]['negate' ] = True
73+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** q }]}
74+ assert elastic .build_dsl_filter (filters ) == expected
75+
76+ # Range filter
77+ rangeFilter = {"range" :{"age" :{"gte" :"2" ,"lt" :"10" }}}
78+ filters = [{"meta" :{** meta ,"type" :"range" },** rangeFilter }]
79+ expected = {'filter' : [{'match_all' : {}},{** rangeFilter }], 'must_not' : []}
80+ assert elastic .build_dsl_filter (filters ) == expected
81+
82+ # negate Range filter
83+ filters [0 ]['meta' ]['negate' ] = True
84+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** rangeFilter }]}
85+ assert elastic .build_dsl_filter (filters ) == expected
86+
87+ # Range filter using query
88+ filters = [{"meta" :{** meta ,"type" :"range" },"query" :{** rangeFilter }}]
89+ expected = {'filter' : [{'match_all' : {}},{** rangeFilter }], 'must_not' : []}
90+ assert elastic .build_dsl_filter (filters ) == expected
91+
92+ # negate Range filter
93+ filters [0 ]['meta' ]['negate' ] = True
94+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** rangeFilter }]}
95+ assert elastic .build_dsl_filter (filters ) == expected
96+
97+ # exists
98+ exists = {"exists" :{"field" : 'age' }}
99+ filters = [{"meta" :{** meta ,"type" :"exists" },** exists }]
100+ expected = {'filter' : [{'match_all' : {}},{** exists }], 'must_not' : []}
101+ assert elastic .build_dsl_filter (filters ) == expected
102+
103+ # negate exists
104+ filters [0 ]['meta' ]['negate' ] = True
105+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** exists }]}
106+
107+ #exists using query
108+ filters = [{"meta" :{** meta ,"type" :"exists" },"query" :{** exists }}]
109+ expected = {'filter' : [{'match_all' : {}},{** exists }], 'must_not' : []}
110+ assert elastic .build_dsl_filter (filters ) == expected
111+
112+ # negate exists
113+ filters [0 ]['meta' ]['negate' ] = True
114+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** exists }]}
115+ assert elastic .build_dsl_filter (filters ) == expected
116+
117+ # type custom spatial filter using key "query"
118+ q = {"bool" :{"must" :[{"exists" :{"field" :"point" }},{** geo_distance }]}}
119+ filters = [{"meta" :{** meta ,"type" :"custom" ,"key" :"query" },"query" :{** q }}]
120+ expected = {'filter' : [{'match_all' : {}}, {** q }], 'must_not' : []}
121+ assert elastic .build_dsl_filter (filters ) == expected
122+
123+ # negate custom filter with key query
124+ filters [0 ]['meta' ]['negate' ] = True
125+ expected = {'filter' : [{'match_all' : {}}], 'must_not' : [{** q }]}
126+ assert elastic .build_dsl_filter (filters ) == expected
127+
128+ # filters from control dont send a type
129+ filters = [{"meta" :{** meta },"query" :{** phrase }}]
130+ expected = {'filter' : [{'match_all' : {}},{** phrase }], 'must_not' : []}
131+ assert elastic .build_dsl_filter (filters ) == expected
37132
38133
39134def test_get_es_headers ():
0 commit comments