From 92fc9052e5c1a7ea3e5358dc98a295d1b836ea76 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 24 Jul 2026 15:37:22 +0000 Subject: [PATCH] =?UTF-8?q?Carry=20the=20client=5Fbooking=5Freference=20on?= =?UTF-8?q?=20the=20Abri=20trigger=20message=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 (1M context) --- .../abri/test_abri_trigger_request.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tests/applications/abri/test_abri_trigger_request.py b/tests/applications/abri/test_abri_trigger_request.py index 928c6973a..134264458 100644 --- a/tests/applications/abri/test_abri_trigger_request.py +++ b/tests/applications/abri/test_abri_trigger_request.py @@ -115,6 +115,41 @@ def test_a_blank_surveyor_identifier_is_treated_as_missing(blank: str) -> None: AbriTriggerRequest.model_validate(message) +def test_a_message_carries_the_client_booking_reference() -> None: + # The Job Number OpenHousing returns on a successful log; the consumer + # reads it to tell "job exists" (amend/abandon) from "never logged" (log). + message = _full_message() + message["client_booking_reference"] = "AD0226519" + + # Act + request = AbriTriggerRequest.model_validate(message) + + # Assert + assert request.client_booking_reference == "AD0226519" + + +@pytest.mark.parametrize("blank", ["", " "]) +def test_a_blank_client_booking_reference_is_treated_as_missing(blank: str) -> None: + # A blank reference means no Job Number: the consumer must treat it as + # "never logged / reference lost", not "job exists". + message = _full_message() + message["client_booking_reference"] = blank + + # Act + request = AbriTriggerRequest.model_validate(message) + + # Assert + assert request.client_booking_reference is None + + +def test_a_message_without_a_client_booking_reference_defaults_to_none() -> None: + # Act + request = AbriTriggerRequest.model_validate(_full_message()) + + # Assert + assert request.client_booking_reference is None + + def test_a_message_carries_the_outcome_for_the_abandonment_reason_mapping() -> None: # Arrange message = _full_message()