@@ -58,10 +58,11 @@ def test_simple_rule_eligible(faker: Faker):
5858 return_value = [
5959 {
6060 "NHS_NUMBER" : f"PERSON#{ nhs_number } " ,
61- "ATTRIBUTE_TYPE" : f "PERSON# { nhs_number } " ,
61+ "ATTRIBUTE_TYPE" : "PERSON" ,
6262 "DATE_OF_BIRTH" : date_of_birth .strftime ("%Y%m%d" ),
6363 "POSTCODE" : postcode ,
64- }
64+ },
65+ {"NHS_NUMBER" : f"PERSON#{ nhs_number } " , "ATTRIBUTE_TYPE" : "COHORT" , "COHORT_MAP" : {}},
6566 ]
6667 )
6768 rules_repo .get_campaign_configs = MagicMock (
@@ -113,10 +114,11 @@ def test_simple_rule_ineligible(faker: Faker):
113114 return_value = [
114115 {
115116 "NHS_NUMBER" : f"PERSON#{ nhs_number } " ,
116- "ATTRIBUTE_TYPE" : f "PERSON# { nhs_number } " ,
117+ "ATTRIBUTE_TYPE" : "PERSON" ,
117118 "DATE_OF_BIRTH" : date_of_birth .strftime ("%Y%m%d" ),
118119 "POSTCODE" : postcode ,
119- }
120+ },
121+ {"NHS_NUMBER" : f"PERSON#{ nhs_number } " , "ATTRIBUTE_TYPE" : "COHORT" , "COHORT_MAP" : {}},
120122 ]
121123 )
122124 rules_repo .get_campaign_configs = MagicMock (
@@ -160,12 +162,16 @@ def test_equals_rule():
160162 rule = IterationRuleFactory .build (operator = RuleOperator .equals , comparator = "42" )
161163 assert EligibilityService .evaluate_rule (rule , "42" )
162164 assert not EligibilityService .evaluate_rule (rule , "99" )
165+ assert not EligibilityService .evaluate_rule (rule , "" )
166+ assert not EligibilityService .evaluate_rule (rule , None )
163167
164168
165169def test_not_equals_rule ():
166170 rule = IterationRuleFactory .build (operator = RuleOperator .ne , comparator = "42" )
167171 assert EligibilityService .evaluate_rule (rule , "99" )
168172 assert not EligibilityService .evaluate_rule (rule , "42" )
173+ assert EligibilityService .evaluate_rule (rule , "" )
174+ assert EligibilityService .evaluate_rule (rule , None )
169175
170176
171177def test_less_than_rule ():
@@ -174,27 +180,35 @@ def test_less_than_rule():
174180 assert EligibilityService .evaluate_rule (rule , "99" )
175181 assert not EligibilityService .evaluate_rule (rule , "100" )
176182 assert not EligibilityService .evaluate_rule (rule , "101" )
183+ assert EligibilityService .evaluate_rule (rule , "" )
184+ assert EligibilityService .evaluate_rule (rule , None )
177185
178186
179187def test_less_than_or_equal_rule ():
180188 rule = IterationRuleFactory .build (operator = RuleOperator .lte , comparator = "100" )
181189 assert EligibilityService .evaluate_rule (rule , "99" )
182190 assert EligibilityService .evaluate_rule (rule , "100" )
183191 assert not EligibilityService .evaluate_rule (rule , "101" )
192+ assert EligibilityService .evaluate_rule (rule , "" )
193+ assert EligibilityService .evaluate_rule (rule , None )
184194
185195
186196def test_greater_than_rule ():
187197 rule = IterationRuleFactory .build (operator = RuleOperator .gt , comparator = "100" )
188198 assert EligibilityService .evaluate_rule (rule , "101" )
189199 assert not EligibilityService .evaluate_rule (rule , "100" )
190200 assert not EligibilityService .evaluate_rule (rule , "99" )
201+ assert not EligibilityService .evaluate_rule (rule , "" )
202+ assert not EligibilityService .evaluate_rule (rule , None )
191203
192204
193205def test_greater_than_or_equal_rule ():
194206 rule = IterationRuleFactory .build (operator = RuleOperator .gte , comparator = "100" )
195207 assert EligibilityService .evaluate_rule (rule , "100" )
196208 assert EligibilityService .evaluate_rule (rule , "101" )
197209 assert not EligibilityService .evaluate_rule (rule , "99" )
210+ assert not EligibilityService .evaluate_rule (rule , "" )
211+ assert not EligibilityService .evaluate_rule (rule , None )
198212
199213
200214def test_year_gt_rule_future_date ():
@@ -204,6 +218,8 @@ def test_year_gt_rule_future_date():
204218 attribute_value = future_date .strftime ("%Y%m%d" )
205219 rule = IterationRuleFactory .build (operator = RuleOperator .year_gt , comparator = str (years_offset ))
206220 assert EligibilityService .evaluate_rule (rule , attribute_value )
221+ assert not EligibilityService .evaluate_rule (rule , "" )
222+ assert not EligibilityService .evaluate_rule (rule , None )
207223
208224
209225def test_year_gt_rule_past_date ():
@@ -213,12 +229,8 @@ def test_year_gt_rule_past_date():
213229 attribute_value = past_date .strftime ("%Y%m%d" )
214230 rule = IterationRuleFactory .build (operator = RuleOperator .year_gt , comparator = str (years_offset ))
215231 assert not EligibilityService .evaluate_rule (rule , attribute_value )
216-
217-
218- def test_year_gt_rule_empty_value ():
219- rule = IterationRuleFactory .build (operator = RuleOperator .year_gt , comparator = "2" )
220- assert not EligibilityService .evaluate_rule (rule , None )
221232 assert not EligibilityService .evaluate_rule (rule , "" )
233+ assert not EligibilityService .evaluate_rule (rule , None )
222234
223235
224236def test_unimplemented_operator ():
0 commit comments