Skip to content

Commit f1a50ed

Browse files
authored
ELI-311: Campaign Config Data Type Changes (#269)
1 parent bea92fb commit f1a50ed

File tree

4 files changed

+29
-9
lines changed

4 files changed

+29
-9
lines changed

src/eligibility_signposting_api/audit/audit_models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ class AuditAction(CamelCaseBaseModel):
7070

7171
class AuditCondition(CamelCaseBaseModel):
7272
campaign_id: str | None = None
73-
campaign_version: str | None = None
73+
campaign_version: int | None = None
7474
iteration_id: str | None = None
75-
iteration_version: str | None = None
75+
iteration_version: int | None = None
7676
condition_name: str | None = None
7777
status: str | None = None
7878
status_text: str | None = None

src/eligibility_signposting_api/model/campaign_config.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
from pydantic import SerializationInfo
1818

1919
CampaignName = NewType("CampaignName", str)
20-
CampaignVersion = NewType("CampaignVersion", str)
20+
CampaignVersion = NewType("CampaignVersion", int)
2121
CampaignID = NewType("CampaignID", str)
2222
IterationName = NewType("IterationName", str)
23-
IterationVersion = NewType("IterationVersion", str)
23+
IterationVersion = NewType("IterationVersion", int)
2424
IterationID = NewType("IterationID", str)
2525
IterationDate = NewType("IterationDate", date)
2626
RuleName = NewType("RuleName", str)
@@ -185,9 +185,9 @@ class CampaignConfig(BaseModel):
185185
name: CampaignName = Field(..., alias="Name")
186186
type: Literal["V", "S"] = Field(..., alias="Type")
187187
target: Literal["COVID", "FLU", "MMR", "RSV"] = Field(..., alias="Target")
188-
manager: str | None = Field(None, alias="Manager")
189-
approver: str | None = Field(None, alias="Approver")
190-
reviewer: str | None = Field(None, alias="Reviewer")
188+
manager: list[str] | None = Field(None, alias="Manager")
189+
approver: list[str] | None = Field(None, alias="Approver")
190+
reviewer: list[str] | None = Field(None, alias="Reviewer")
191191
iteration_frequency: Literal["X", "D", "W", "M", "Q", "A"] = Field(..., alias="IterationFrequency")
192192
iteration_type: Literal["A", "M", "S", "O"] = Field(..., alias="IterationType")
193193
iteration_time: str | None = Field(None, alias="IterationTime")

tests/unit/audit/test_audit_context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def test_append_audit_condition_adds_condition_to_audit_log_on_g(app):
9999
]
100100

101101
condition_name = ConditionName("Condition1")
102-
iteration = IterationFactory.build()
102+
iteration = IterationFactory.build(version=12345)
103103
audit_rules = [
104104
Reason(
105105
rule_type=RuleType.filter,
@@ -119,7 +119,7 @@ def test_append_audit_condition_adds_condition_to_audit_log_on_g(app):
119119
iteration_result = IterationResult(
120120
status=Status.actionable, cohort_results=[cohort_group_result], actions=suggested_actions
121121
)
122-
campaign_details = (CampaignID("CampaignID1"), CampaignVersion("CampaignVersion1"))
122+
campaign_details = (CampaignID("CampaignID1"), CampaignVersion(123))
123123
matched_action_detail = MatchedActionDetail(RuleName("RedirectRuleName1"), RulePriority("1"), suggested_actions)
124124

125125
best_iteration_results = BestIterationResult(

tests/unit/model/test_campaign_config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,23 @@ def test_iteration_rule_deserialisation(rule_stop: str, expected):
9292

9393
# Then
9494
assert_that(actual, is_iteration_rule().with_rule_stop(expected))
95+
96+
97+
@pytest.mark.parametrize(
98+
("field_name", "value"),
99+
[
100+
("manager", "[email protected]"),
101+
("approver", "[email protected]"),
102+
("reviewer", "[email protected]"),
103+
],
104+
)
105+
def test_campaign_should_accept_list_of_strings_for_different_role_emails(field_name: str, value: str):
106+
# Given
107+
kwargs = {field_name: value}
108+
109+
# When, Then
110+
with pytest.raises(
111+
ValueError,
112+
match=rf"1 validation error for CampaignConfig\n{field_name}\n\s+Input should be a valid list.*",
113+
):
114+
RawCampaignConfigFactory.build(**kwargs)

0 commit comments

Comments
 (0)