From 021e7c15bb0157729dbacc576841e3be81d6164f Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Fri, 3 Jul 2026 16:26:15 +0000 Subject: [PATCH] =?UTF-8?q?Abri=20job=20amendment=20trigger=20is=20named?= =?UTF-8?q?=20after=20the=20OpenHousing=20job=20it=20amends=20=F0=9F=9F=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- etl/hubspot/hubspot_deal_differ.py | 6 ++++- etl/hubspot/tests/test_hubspot_deal_differ.py | 26 +++++++++---------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/etl/hubspot/hubspot_deal_differ.py b/etl/hubspot/hubspot_deal_differ.py index b693cf7a4..977dc3e4d 100644 --- a/etl/hubspot/hubspot_deal_differ.py +++ b/etl/hubspot/hubspot_deal_differ.py @@ -197,7 +197,7 @@ class HubspotDealDiffer: return parse_hs_date(new_deal.get("confirmed_survey_date")) is not None @staticmethod - def check_for_abri_survey_amendment( + def check_for_abri_job_amendment( new_deal: Dict[str, str], new_project: Optional[ProjectData], old_deal: HubspotDealData, @@ -209,6 +209,10 @@ class HubspotDealDiffer: if old_deal.confirmed_survey_date is None: return False + # TODO: a cleared survey date (was set, now empty) still fires this + # check, but the amendoptiappt route cannot express a cancellation. + # Cancellation semantics (the "delete" action / canceljob route) need + # a deliberate decision before this trigger is wired to a consumer. new_survey_date = parse_hs_date(new_deal.get("confirmed_survey_date")) if old_deal.confirmed_survey_date != new_survey_date: return True diff --git a/etl/hubspot/tests/test_hubspot_deal_differ.py b/etl/hubspot/tests/test_hubspot_deal_differ.py index 08e6c78a1..c3e24e08f 100644 --- a/etl/hubspot/tests/test_hubspot_deal_differ.py +++ b/etl/hubspot/tests/test_hubspot_deal_differ.py @@ -548,12 +548,12 @@ def test_abri_job_logging__non_abri_project_id_with_abri_code__returns_false() - assert result is False -# =================================== -# ABRI SURVEY AMENDMENT TRIGGER TESTS -# =================================== +# ================================ +# ABRI JOB AMENDMENT TRIGGER TESTS +# ================================ -def test_abri_survey_amendment__date_changed_on_abri_deal__returns_true() -> None: +def test_abri_job_amendment__date_changed_on_abri_deal__returns_true() -> None: deal_id = uuid.uuid4() # Arrange @@ -569,7 +569,7 @@ def test_abri_survey_amendment__date_changed_on_abri_deal__returns_true() -> Non ) # Act - result = HubspotDealDiffer.check_for_abri_survey_amendment( + result = HubspotDealDiffer.check_for_abri_job_amendment( new_deal=new_deal, new_project=None, old_deal=old_deal, @@ -579,7 +579,7 @@ def test_abri_survey_amendment__date_changed_on_abri_deal__returns_true() -> Non assert result is True -def test_abri_survey_amendment__non_abri_deal__returns_false() -> None: +def test_abri_job_amendment__non_abri_deal__returns_false() -> None: deal_id = uuid.uuid4() # Arrange @@ -595,7 +595,7 @@ def test_abri_survey_amendment__non_abri_deal__returns_false() -> None: ) # Act - result = HubspotDealDiffer.check_for_abri_survey_amendment( + result = HubspotDealDiffer.check_for_abri_job_amendment( new_deal=new_deal, new_project=None, old_deal=old_deal, @@ -605,7 +605,7 @@ def test_abri_survey_amendment__non_abri_deal__returns_false() -> None: assert result is False -def test_abri_survey_amendment__date_and_time_unchanged__returns_false() -> None: +def test_abri_job_amendment__date_and_time_unchanged__returns_false() -> None: deal_id = uuid.uuid4() # Arrange @@ -623,7 +623,7 @@ def test_abri_survey_amendment__date_and_time_unchanged__returns_false() -> None ) # Act - result = HubspotDealDiffer.check_for_abri_survey_amendment( + result = HubspotDealDiffer.check_for_abri_job_amendment( new_deal=new_deal, new_project=None, old_deal=old_deal, @@ -633,7 +633,7 @@ def test_abri_survey_amendment__date_and_time_unchanged__returns_false() -> None assert result is False -def test_abri_survey_amendment__time_changed_on_abri_deal__returns_true() -> None: +def test_abri_job_amendment__time_changed_on_abri_deal__returns_true() -> None: deal_id = uuid.uuid4() # Arrange @@ -651,7 +651,7 @@ def test_abri_survey_amendment__time_changed_on_abri_deal__returns_true() -> Non ) # Act - result = HubspotDealDiffer.check_for_abri_survey_amendment( + result = HubspotDealDiffer.check_for_abri_job_amendment( new_deal=new_deal, new_project=None, old_deal=old_deal, @@ -661,7 +661,7 @@ def test_abri_survey_amendment__time_changed_on_abri_deal__returns_true() -> Non assert result is True -def test_abri_survey_amendment__date_first_set_on_abri_deal__returns_false() -> None: +def test_abri_job_amendment__date_first_set_on_abri_deal__returns_false() -> None: deal_id = uuid.uuid4() # Arrange @@ -677,7 +677,7 @@ def test_abri_survey_amendment__date_first_set_on_abri_deal__returns_false() -> ) # Act - result = HubspotDealDiffer.check_for_abri_survey_amendment( + result = HubspotDealDiffer.check_for_abri_job_amendment( new_deal=new_deal, new_project=None, old_deal=old_deal,