diff --git a/tests/unit/filter/test_lucene_filter.py b/tests/unit/filter/test_lucene_filter.py index d843fb438..a8f593681 100644 --- a/tests/unit/filter/test_lucene_filter.py +++ b/tests/unit/filter/test_lucene_filter.py @@ -451,3 +451,30 @@ def test_create_filter_success(self, testcase, input_str, cleaned_str): def test_create_filter_error(self, testcase, input_str, message): with raises(LuceneFilterError, match=re.escape(message)): LuceneFilter.create(f'foo: "{input_str}"') + + def test_creates_lucene_compliance_filter_two_matching_regex_keys_of_two(self): + lucene_filter = LuceneFilter.create( + 'regex_key_one: "/.*value.*/" AND regex_key_two: "/.*value.*/"', + special_fields={"regex_fields": ["regex_key_one", "regex_key_two"]}, + ) + + a = And( + RegExFilterExpression(["regex_key_one"], ".*value.*"), + RegExFilterExpression(["regex_key_two"], ".*value.*"), + ) + + assert lucene_filter == And( + RegExFilterExpression(["regex_key_one"], ".*value.*"), + RegExFilterExpression(["regex_key_two"], ".*value.*"), + ) + + def test_creates_lucene_compliance_filter_with_one_matching_and_one_missmatching_regex_key_of_two(self): + lucene_filter = LuceneFilter.create( + 'regex_key_one: ".*value.*" AND key_two: "value"', + special_fields={"regex_fields": ["regex_key_one", "i_dont_exist"]}, + ) + + assert lucene_filter == And( + RegExFilterExpression(["regex_key_one"], ".*value.*"), + StringFilterExpression(["key_two"], "value"), + )