16
16
# under the License.
17
17
"""Unit tests for Rison filter parser."""
18
18
19
- from unittest .mock import patch
20
-
21
19
from superset .utils .rison_filters import merge_rison_filters , RisonFilterParser
20
+ from tests .integration_tests .base_tests import SupersetTestCase
22
21
23
22
24
- class TestRisonFilterParser :
23
+ class TestRisonFilterParser ( SupersetTestCase ) :
25
24
"""Test the RisonFilterParser class."""
26
25
27
26
def test_simple_equality (self ):
@@ -114,7 +113,7 @@ def test_comparison_operators(self):
114
113
def test_between_operator (self ):
115
114
"""Test BETWEEN operator."""
116
115
parser = RisonFilterParser ()
117
- result = parser .parse ("(date:(between:!(2024-01-01, 2024-12-31)))" )
116
+ result = parser .parse ("(date:(between:!(' 2024-01-01',' 2024-12-31' )))" )
118
117
119
118
assert len (result ) == 1
120
119
assert result [0 ]["operator" ] == "BETWEEN"
@@ -163,7 +162,6 @@ def test_empty_filter(self):
163
162
parser = RisonFilterParser ()
164
163
165
164
assert parser .parse ("" ) == []
166
- assert parser .parse (None ) == []
167
165
assert parser .parse ("()" ) == []
168
166
169
167
def test_invalid_rison (self ):
@@ -174,17 +172,16 @@ def test_invalid_rison(self):
174
172
assert parser .parse ("invalid rison" ) == []
175
173
assert parser .parse ("(unclosed" ) == []
176
174
177
- @patch ("superset.utils.rison_filters.request" )
178
- def test_parse_from_request (self , mock_request ):
175
+ def test_parse_from_request (self ):
179
176
"""Test parsing from request args."""
180
- mock_request . args = { "f" : "(country:USA)" }
181
-
182
- parser = RisonFilterParser ()
183
- result = parser .parse () # No argument, should get from request
177
+ with self . client :
178
+ with self . client . get ( "/?f=(country:USA)" ). request :
179
+ parser = RisonFilterParser ()
180
+ result = parser .parse () # No argument, should get from request
184
181
185
- assert len (result ) == 1
186
- assert result [0 ]["subject" ] == "country"
187
- assert result [0 ]["comparator" ] == "USA"
182
+ assert len (result ) == 1
183
+ assert result [0 ]["subject" ] == "country"
184
+ assert result [0 ]["comparator" ] == "USA"
188
185
189
186
def test_merge_rison_filters (self ):
190
187
"""Test merging Rison filters into form_data."""
@@ -200,9 +197,9 @@ def test_merge_rison_filters(self):
200
197
]
201
198
}
202
199
203
- with patch ( "superset.utils.rison_filters.request" ) as mock_request :
204
- mock_request . args = { "f" : " (country:USA)"}
205
- merge_rison_filters (form_data )
200
+ with self . client :
201
+ with self . client . get ( "/?f= (country:USA)"). request :
202
+ merge_rison_filters (form_data )
206
203
207
204
# Should have both existing and new filter
208
205
assert len (form_data ["adhoc_filters" ]) == 2
@@ -213,9 +210,9 @@ def test_merge_rison_filters_empty(self):
213
210
"""Test merging with no Rison filters."""
214
211
form_data = {"adhoc_filters" : []}
215
212
216
- with patch ( "superset.utils.rison_filters.request" ) as mock_request :
217
- mock_request . args = {}
218
- merge_rison_filters (form_data )
213
+ with self . client :
214
+ with self . client . get ( "/" ). request :
215
+ merge_rison_filters (form_data )
219
216
220
217
# Should remain empty
221
218
assert form_data ["adhoc_filters" ] == []
0 commit comments