From 8cc6ee9f76b20658a7e7b4ed820706c3557ab087 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 7 Jul 2026 15:42:02 +0000 Subject: [PATCH] =?UTF-8?q?Accept=20an=20abandon=5Fjob=20flow=20carrying?= =?UTF-8?q?=20the=20deal=20outcome=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- .../abri/test_abri_trigger_request.py | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/applications/abri/test_abri_trigger_request.py b/tests/applications/abri/test_abri_trigger_request.py index 9e9672a2b..24baca130 100644 --- a/tests/applications/abri/test_abri_trigger_request.py +++ b/tests/applications/abri/test_abri_trigger_request.py @@ -83,6 +83,33 @@ def test_a_message_without_a_confirmed_time_parses_for_logging() -> None: assert request.confirmed_survey_time is None +def test_a_message_naming_abandon_job_validates_with_only_the_deal_id() -> None: + # Arrange: abandonment needs no deal field beyond the deal id. + message = { + "hubspot_deal_id": "9876543210", + "flows": ["abandon_job"], + } + + # Act + request = AbriTriggerRequest.model_validate(message) + + # Assert + assert request.flows == ["abandon_job"] + + +def test_a_message_carries_the_outcome_for_the_abandonment_reason_mapping() -> None: + # Arrange + message = _full_message() + message["flows"] = ["abandon_job"] + message["outcome"] = "no answer" + + # Act + request = AbriTriggerRequest.model_validate(message) + + # Assert + assert request.outcome == "no answer" + + def test_a_message_naming_an_unknown_flow_fails_validation() -> None: # Arrange message = _full_message()