Skip to content

Commit 5fbab26

Browse files
committed
Uses list[SuggestedAction] instead of SuggestedActions
1 parent 4c3faf2 commit 5fbab26

4 files changed

Lines changed: 27 additions & 19 deletions

File tree

src/eligibility_signposting_api/audit_context.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
ConditionName,
2525
IterationResult,
2626
Status,
27-
SuggestedActions,
27+
SuggestedAction,
2828
)
2929
from eligibility_signposting_api.model.rules import CampaignID, CampaignVersion, Iteration, RuleName, RulePriority
3030
from eligibility_signposting_api.services.audit_service import AuditService
@@ -61,7 +61,7 @@ def add_request_details(request: Request) -> None:
6161

6262
@staticmethod
6363
def append_audit_condition(
64-
suggested_actions: SuggestedActions | None,
64+
suggested_actions: list[SuggestedAction] | None,
6565
condition_name: ConditionName,
6666
best_results: tuple[Iteration | None, IterationResult | None, dict[str, CohortGroupResult] | None],
6767
campaign_details: tuple[CampaignID | None, CampaignVersion | None],
@@ -104,14 +104,14 @@ def append_audit_condition(
104104

105105
if suggested_actions is None:
106106
audit_actions = None
107-
elif len(suggested_actions.actions) > 0:
108-
for action in suggested_actions.actions:
107+
elif len(suggested_actions) > 0:
108+
for action in suggested_actions:
109109
audit_actions.append(
110110
AuditAction(
111111
action_code=action.action_code,
112112
action_type=action.action_type,
113113
action_description=action.action_description,
114-
action_url=action.url_link,
114+
action_url=str(action.url_link),
115115
action_url_label=action.url_label,
116116
)
117117
)

src/eligibility_signposting_api/services/calculators/eligibility_calculator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,9 @@ def evaluate_eligibility(self, *, include_actions_flag: bool = True) -> eligibil
221221
final_result = self.build_condition_results(condition_results)
222222
return eligibility.EligibilityStatus(conditions=final_result)
223223

224-
def handle_redirect_rules(self, best_active_iteration: Iteration) -> tuple[list[SuggestedAction] | None, RulePriority | None, RuleName | None]:
224+
def handle_redirect_rules(
225+
self, best_active_iteration: Iteration
226+
) -> tuple[list[SuggestedAction] | None, RulePriority | None, RuleName | None]:
225227
redirect_rules, action_mapper, default_comms = self.get_redirect_rules(best_active_iteration)
226228
priority_getter = attrgetter("priority")
227229
sorted_rules_by_priority = sorted(redirect_rules, key=priority_getter)

tests/unit/test_audit_context.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import pytest
77
from flask import Flask, g, request
8+
from pydantic import HttpUrl
89

910
from eligibility_signposting_api.audit_context import AuditContext
1011
from eligibility_signposting_api.audit_models import AuditEvent
@@ -21,7 +22,6 @@
2122
RulePriority,
2223
Status,
2324
SuggestedAction,
24-
SuggestedActions,
2525
UrlLabel,
2626
UrlLink,
2727
)
@@ -81,23 +81,21 @@ def test_add_request_details_when_headers_are_empty_sets_audit_log_on_g(app):
8181

8282

8383
def test_append_audit_condition_adds_condition_to_audit_log_on_g(app):
84-
suggested_actions: SuggestedActions | None
84+
suggested_actions: list[SuggestedAction] | None
8585
condition_name: ConditionName
8686
best_results: tuple[Iteration, IterationResult, dict[str, CohortGroupResult]]
8787
campaign_details: tuple[CampaignID | None, CampaignVersion | None]
8888
redirect_rule_details: tuple[RulePriority | None, RuleName | None]
8989

90-
suggested_actions = SuggestedActions(
91-
actions=[
92-
SuggestedAction(
93-
action_code=ActionCode("ActionCode1"),
94-
action_type=ActionType("ActionType1"),
95-
action_description=ActionDescription("ActionDescription1"),
96-
url_link=UrlLink("https://www.example.com"),
97-
url_label=UrlLabel("ActionLabel1"),
98-
)
99-
]
100-
)
90+
suggested_actions = [
91+
SuggestedAction(
92+
action_code=ActionCode("ActionCode1"),
93+
action_type=ActionType("ActionType1"),
94+
action_description=ActionDescription("ActionDescription1"),
95+
url_link=UrlLink(HttpUrl("https://example.com")),
96+
url_label=UrlLabel("ActionLabel1"),
97+
)
98+
]
10199

102100
condition_name = ConditionName("Condition1")
103101
iteration = IterationFactory.build()

tests/unit/views/test_eligibility.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,10 @@ def test_excludes_nulls_via_build_response(client: FlaskClient):
615615
"eligibility_signposting_api.views.eligibility.EligibilityService.get_eligibility_status",
616616
return_value=MagicMock(), # No effect
617617
),
618+
patch(
619+
"eligibility_signposting_api.views.eligibility.AuditService.audit",
620+
return_value=MagicMock(), # No effect
621+
),
618622
patch(
619623
"eligibility_signposting_api.views.eligibility.build_eligibility_response",
620624
return_value=mocked_response,
@@ -663,6 +667,10 @@ def test_build_response_include_values_that_are_not_null(client: FlaskClient):
663667
"eligibility_signposting_api.views.eligibility.EligibilityService.get_eligibility_status",
664668
return_value=MagicMock(), # No effect
665669
),
670+
patch(
671+
"eligibility_signposting_api.views.eligibility.AuditService.audit",
672+
return_value=MagicMock(), # No effect
673+
),
666674
patch(
667675
"eligibility_signposting_api.views.eligibility.build_eligibility_response",
668676
return_value=mocked_response,

0 commit comments

Comments
 (0)