diff --git a/src/eligibility_signposting_api/config/constants.py b/src/eligibility_signposting_api/config/constants.py index 813a12b19..a05aca48e 100644 --- a/src/eligibility_signposting_api/config/constants.py +++ b/src/eligibility_signposting_api/config/constants.py @@ -9,3 +9,4 @@ CONSUMER_MAPPING_FILE_NAME = "consumer_mapping_config.json" CACHE_TTL_SECONDS = int(os.getenv("CONFIG_CACHE_TTL_SECONDS", "1800")) +STATUS_TEXT_OVERRIDE_ACTION_TYPE = "norender_StatusTextOverride" diff --git a/src/eligibility_signposting_api/model/eligibility_status.py b/src/eligibility_signposting_api/model/eligibility_status.py index 89b73828b..f7096a08d 100644 --- a/src/eligibility_signposting_api/model/eligibility_status.py +++ b/src/eligibility_signposting_api/model/eligibility_status.py @@ -151,6 +151,7 @@ class MatchedActionDetail: rule_name: campaign_config.RuleName | None = None rule_priority: campaign_config.RulePriority | None = None actions: list[SuggestedAction] | None = None + status_text_override: StatusText | None = None @dataclass diff --git a/tests/unit/config/test_config.py b/tests/unit/config/test_config.py index 1deefbb87..d7f6b033e 100644 --- a/tests/unit/config/test_config.py +++ b/tests/unit/config/test_config.py @@ -4,6 +4,7 @@ from yarl import URL from eligibility_signposting_api.config.config import LOG_LEVEL, AwsAccessKey, AwsRegion, AwsSecretAccessKey, config +from eligibility_signposting_api.config.constants import STATUS_TEXT_OVERRIDE_ACTION_TYPE from eligibility_signposting_api.repos.campaign_repo import BucketName from eligibility_signposting_api.repos.person_repo import TableName @@ -48,3 +49,7 @@ def test_config_without_env_variable(): assert config_data_without_env["s3_endpoint"] == URL("http://localhost:4566") assert config_data_without_env["rules_bucket_name"] == BucketName("test-rules-bucket") assert config_data_without_env["log_level"] == LOG_LEVEL + + +def test_status_text_override_action_type_constant_value(): + assert STATUS_TEXT_OVERRIDE_ACTION_TYPE == "norender_StatusTextOverride" diff --git a/tests/unit/model/test_status.py b/tests/unit/model/test_status.py index 8c07b9511..4419542f0 100644 --- a/tests/unit/model/test_status.py +++ b/tests/unit/model/test_status.py @@ -1,4 +1,14 @@ -from eligibility_signposting_api.model.eligibility_status import ConditionName, RuleType, Status, StatusText +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: @@ -45,3 +55,49 @@ def test_get_action_rule_type(self): 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=StatusText(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"), + ), + )