Skip to content

Commit e2f845e

Browse files
Updated logic and tests as per Edds comment.
1 parent 80902b2 commit e2f845e

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

src/eligibility_signposting_api/services/eligibility_services.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,15 +85,15 @@ def evaluate_rule(iteration_rule: IterationRule, attribute_value: Any) -> bool:
8585
case RuleOperator.equals:
8686
return attribute_value == iteration_rule.comparator
8787
case RuleOperator.gt:
88-
return int(attribute_value or 0) > int(iteration_rule.comparator)
88+
return bool(attribute_value) and int(attribute_value) > int(iteration_rule.comparator)
8989
case RuleOperator.lt:
90-
return int(attribute_value or 0) < int(iteration_rule.comparator)
90+
return bool(attribute_value) and int(attribute_value) < int(iteration_rule.comparator)
9191
case RuleOperator.ne:
92-
return attribute_value != iteration_rule.comparator
92+
return bool(attribute_value) and attribute_value != iteration_rule.comparator
9393
case RuleOperator.gte:
94-
return int(attribute_value or 0) >= int(iteration_rule.comparator)
94+
return bool(attribute_value) and int(attribute_value) >= int(iteration_rule.comparator)
9595
case RuleOperator.lte:
96-
return int(attribute_value or 0) <= int(iteration_rule.comparator)
96+
return bool(attribute_value) and int(attribute_value) <= int(iteration_rule.comparator)
9797
case RuleOperator.contains:
9898
return attribute_value and iteration_rule.comparator in str(attribute_value)
9999
case RuleOperator.not_contains:

tests/unit/services/test_eligibility_services.py

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,12 @@ def test_equals_rule():
165165
assert not EligibilityService.evaluate_rule(rule, None)
166166
assert not EligibilityService.evaluate_rule(rule, "99")
167167

168+
rule = IterationRuleFactory.build(operator=RuleOperator.equals, comparator="-1")
169+
assert EligibilityService.evaluate_rule(rule, "-1")
170+
assert not EligibilityService.evaluate_rule(rule, "0")
171+
assert not EligibilityService.evaluate_rule(rule, "")
172+
assert not EligibilityService.evaluate_rule(rule, None)
173+
168174

169175
def test_greater_than_rule():
170176
rule = IterationRuleFactory.build(operator=RuleOperator.gt, comparator="100")
@@ -174,24 +180,44 @@ def test_greater_than_rule():
174180
assert not EligibilityService.evaluate_rule(rule, "")
175181
assert not EligibilityService.evaluate_rule(rule, None)
176182

183+
rule = IterationRuleFactory.build(operator=RuleOperator.gt, comparator="-1")
184+
assert EligibilityService.evaluate_rule(rule, "0")
185+
assert not EligibilityService.evaluate_rule(rule, "-1")
186+
assert not EligibilityService.evaluate_rule(rule, "-2")
187+
assert not EligibilityService.evaluate_rule(rule, "")
188+
assert not EligibilityService.evaluate_rule(rule, None)
189+
177190

178191
def test_less_than_rule():
179192
rule = IterationRuleFactory.build(operator=RuleOperator.lt, comparator="100")
180193
assert EligibilityService.evaluate_rule(rule, "42")
181194
assert EligibilityService.evaluate_rule(rule, "99")
182195
assert not EligibilityService.evaluate_rule(rule, "100")
183196
assert not EligibilityService.evaluate_rule(rule, "101")
184-
assert EligibilityService.evaluate_rule(rule, "")
185-
assert EligibilityService.evaluate_rule(rule, None)
197+
assert not EligibilityService.evaluate_rule(rule, "")
198+
assert not EligibilityService.evaluate_rule(rule, None)
199+
200+
rule = IterationRuleFactory.build(operator=RuleOperator.lt, comparator="-1")
201+
assert EligibilityService.evaluate_rule(rule, "-2")
202+
assert not EligibilityService.evaluate_rule(rule, "-1")
203+
assert not EligibilityService.evaluate_rule(rule, "0")
204+
assert not EligibilityService.evaluate_rule(rule, "")
205+
assert not EligibilityService.evaluate_rule(rule, None)
186206

187207

188208
def test_not_equals_rule():
189209
rule = IterationRuleFactory.build(operator=RuleOperator.ne, comparator="27")
190210
assert EligibilityService.evaluate_rule(rule, "98")
191-
assert EligibilityService.evaluate_rule(rule, "")
192-
assert EligibilityService.evaluate_rule(rule, None)
211+
assert not EligibilityService.evaluate_rule(rule, "")
212+
assert not EligibilityService.evaluate_rule(rule, None)
193213
assert not EligibilityService.evaluate_rule(rule, "27")
194214

215+
rule = IterationRuleFactory.build(operator=RuleOperator.ne, comparator="-1")
216+
assert not EligibilityService.evaluate_rule(rule, "-1")
217+
assert EligibilityService.evaluate_rule(rule, "0")
218+
assert not EligibilityService.evaluate_rule(rule, "")
219+
assert not EligibilityService.evaluate_rule(rule, None)
220+
195221

196222
def test_greater_than_or_equal_rule():
197223
rule = IterationRuleFactory.build(operator=RuleOperator.gte, comparator="100")
@@ -201,14 +227,28 @@ def test_greater_than_or_equal_rule():
201227
assert not EligibilityService.evaluate_rule(rule, "")
202228
assert not EligibilityService.evaluate_rule(rule, None)
203229

230+
rule = IterationRuleFactory.build(operator=RuleOperator.gte, comparator="-1")
231+
assert EligibilityService.evaluate_rule(rule, "0")
232+
assert EligibilityService.evaluate_rule(rule, "-1")
233+
assert not EligibilityService.evaluate_rule(rule, "-2")
234+
assert not EligibilityService.evaluate_rule(rule, "")
235+
assert not EligibilityService.evaluate_rule(rule, None)
236+
204237

205238
def test_less_than_or_equal_rule():
206239
rule = IterationRuleFactory.build(operator=RuleOperator.lte, comparator="100")
207240
assert EligibilityService.evaluate_rule(rule, "99")
208241
assert EligibilityService.evaluate_rule(rule, "100")
209242
assert not EligibilityService.evaluate_rule(rule, "101")
210-
assert EligibilityService.evaluate_rule(rule, "")
211-
assert EligibilityService.evaluate_rule(rule, None)
243+
assert not EligibilityService.evaluate_rule(rule, "")
244+
assert not EligibilityService.evaluate_rule(rule, None)
245+
246+
rule = IterationRuleFactory.build(operator=RuleOperator.lte, comparator="-1")
247+
assert EligibilityService.evaluate_rule(rule, "-2")
248+
assert EligibilityService.evaluate_rule(rule, "-1")
249+
assert not EligibilityService.evaluate_rule(rule, "0")
250+
assert not EligibilityService.evaluate_rule(rule, "")
251+
assert not EligibilityService.evaluate_rule(rule, None)
212252

213253

214254
def test_contains_rule():

0 commit comments

Comments
 (0)