-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_status.py
More file actions
103 lines (77 loc) · 3.76 KB
/
test_status.py
File metadata and controls
103 lines (77 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
from hamcrest import assert_that, has_properties
from eligibility_signposting_api.model.campaign_config import RuleName, RulePriority
from eligibility_signposting_api.model.eligibility_status import (
ConditionName,
MatchedActionDetail,
RuleType,
Status,
StatusText,
SuggestedAction,
)
class TestStatus:
def test_ordering(self):
assert Status.not_eligible < Status.not_actionable
assert Status.not_actionable < Status.actionable
assert Status.actionable > Status.not_actionable
assert Status.not_actionable > Status.not_eligible
assert Status.not_eligible == Status.not_eligible
def test_is_exclusion(self):
assert Status.not_eligible.is_exclusion
assert Status.not_actionable.is_exclusion
assert not Status.actionable.is_exclusion
def test_worst_status(self):
assert Status.worst(Status.not_eligible, Status.actionable) == Status.not_eligible
assert Status.worst(Status.actionable, Status.not_actionable) == Status.not_actionable
assert Status.worst(Status.not_eligible, Status.not_actionable, Status.actionable) == Status.not_eligible
assert Status.worst(Status.actionable) == Status.actionable
def test_best_status(self):
assert Status.best(Status.not_eligible, Status.actionable) == Status.actionable
assert Status.best(Status.actionable, Status.not_actionable) == Status.actionable
assert Status.best(Status.not_eligible, Status.not_actionable, Status.actionable) == Status.actionable
assert Status.best(Status.not_eligible) == Status.not_eligible
def test_get_status_text(self):
assert Status.not_eligible.get_default_status_text(ConditionName("COVID")) == StatusText(
"We do not believe you can have it"
)
assert Status.not_actionable.get_default_status_text(ConditionName("FLU")) == StatusText(
"You should have the FLU vaccine"
)
assert Status.actionable.get_default_status_text(ConditionName("COVID")) == StatusText(
"You should have the COVID vaccine"
)
def test_get_action_rule_type(self):
assert Status.not_eligible.get_action_rule_type() == RuleType(RuleType.not_eligible_actions)
assert Status.not_actionable.get_action_rule_type() == RuleType(RuleType.not_actionable_actions)
assert Status.actionable.get_action_rule_type() == RuleType(RuleType.redirect)
def test_matched_action_detail_default_status_text_override_is_none():
action_detail = MatchedActionDetail()
assert_that(action_detail, has_properties(status_text_override=None))
def test_matched_action_detail_stores_status_text_override_value():
action_detail = MatchedActionDetail(status_text_override=StatusText("X"))
assert_that(action_detail, has_properties(status_text_override=StatusText("X")))
def test_matched_action_detail_existing_constructor_still_works_with_three_args():
actions: list[SuggestedAction] = []
action_detail = MatchedActionDetail(RuleName("RuleA"), RulePriority(1), actions)
assert_that(
action_detail,
has_properties(
rule_name=RuleName("RuleA"),
rule_priority=RulePriority(1),
actions=actions,
status_text_override=None,
),
)
def test_matched_action_detail_existing_constructor_works_with_four_args():
actions: list[SuggestedAction] = []
action_detail = MatchedActionDetail(
RuleName("RuleA"), RulePriority(1), actions, status_text_override=StatusText("Override")
)
assert_that(
action_detail,
has_properties(
rule_name=RuleName("RuleA"),
rule_priority=RulePriority(1),
actions=actions,
status_text_override=StatusText("Override"),
),
)