@@ -566,6 +566,23 @@ def test_document_matches_filter(filters, document, expected_result):
566566 pytest .param ({"operator" : "==" , "value" : "test" }, id = "Missing condition field key" ),
567567 pytest .param ({"field" : "meta.name" , "value" : "test" }, id = "Missing condition operator key" ),
568568 pytest .param ({"field" : "meta.name" , "operator" : "==" }, id = "Missing condition value key" ),
569+ # Unknown operators
570+ pytest .param ({"field" : "meta.page" , "operator" : "gt" , "value" : 10 }, id = "Unknown comparison operator" ),
571+ pytest .param (
572+ {"operator" : "XOR" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]},
573+ id = "Unknown logical operator" ,
574+ ),
575+ pytest .param (
576+ {
577+ "operator" : "AND" ,
578+ "conditions" : [{"operator" : "XOR" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]}],
579+ },
580+ id = "Unknown nested logical operator" ,
581+ ),
582+ pytest .param (
583+ {"operator" : "and" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]},
584+ id = "Lowercase logical operator" ,
585+ ),
569586]
570587
571588
@@ -574,3 +591,38 @@ def test_document_matches_filter_raises_error(filters):
574591 with pytest .raises (FilterError ):
575592 document = Document (meta = {"page" : 10 })
576593 document_matches_filter (filters , document )
594+
595+
596+ @pytest .mark .parametrize (
597+ "filters,expected_message" ,
598+ [
599+ pytest .param (
600+ {"field" : "meta.page" , "operator" : "gt" , "value" : 10 },
601+ "Unknown comparison operator 'gt'" ,
602+ id = "Unknown comparison operator" ,
603+ ),
604+ pytest .param (
605+ {"operator" : "XOR" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]},
606+ "Unknown logical operator 'XOR'" ,
607+ id = "Unknown logical operator" ,
608+ ),
609+ pytest .param (
610+ {
611+ "operator" : "AND" ,
612+ "conditions" : [
613+ {"operator" : "XOR" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]}
614+ ],
615+ },
616+ "Unknown logical operator 'XOR'" ,
617+ id = "Unknown nested logical operator" ,
618+ ),
619+ pytest .param (
620+ {"operator" : "and" , "conditions" : [{"field" : "meta.page" , "operator" : "==" , "value" : 10 }]},
621+ "Unknown logical operator 'and'" ,
622+ id = "Lowercase logical operator" ,
623+ ),
624+ ],
625+ )
626+ def test_document_matches_filter_unknown_operator_error_message (filters , expected_message ):
627+ with pytest .raises (FilterError , match = expected_message ):
628+ document_matches_filter (filters , Document (meta = {"page" : 10 }))
0 commit comments