From faac50eca4c190b891785b47f57dc988601436f5 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Mon, 6 Jul 2026 16:04:54 +0000 Subject: [PATCH] =?UTF-8?q?A=20client=5Fbooking=5Freference=20change=20tri?= =?UTF-8?q?ggers=20a=20deal=20database=20update=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- backend/app/db/models/hubspot_deal_data.py | 4 ++ etl/hubspot/tests/test_hubspot_deal_differ.py | 52 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/backend/app/db/models/hubspot_deal_data.py b/backend/app/db/models/hubspot_deal_data.py index 48a6f1ba0..036610340 100644 --- a/backend/app/db/models/hubspot_deal_data.py +++ b/backend/app/db/models/hubspot_deal_data.py @@ -71,6 +71,10 @@ class HubspotDealData(SQLModel, table=True): confirmed_survey_time: Optional[str] = Field(default=None) surveyed_date: Optional[datetime] = Field(default=None) design_type: Optional[str] = Field(default=None) + # OpenHousing job number; HubSpot property ID is client_booking_reference. + # Column is created by a drizzle migration in the TS frontend repo, which + # must deploy before this model change (issue #1478). + job_no: Optional[str] = Field(default=None) survey_type: Optional[str] = Field(default=None) measures_for_pibi_ordered: Optional[str] = Field(default=None) diff --git a/etl/hubspot/tests/test_hubspot_deal_differ.py b/etl/hubspot/tests/test_hubspot_deal_differ.py index c3e24e08f..5e9bcfdfa 100644 --- a/etl/hubspot/tests/test_hubspot_deal_differ.py +++ b/etl/hubspot/tests/test_hubspot_deal_differ.py @@ -1226,3 +1226,55 @@ def test_db_update_trigger__listing_changed__returns_true() -> None: ) assert result is True + + +def test_db_update_trigger__client_booking_reference_changed__returns_true() -> None: + deal_id = uuid.uuid4() + + # Arrange + old_deal = make_old_deal( + id=deal_id, + job_no=None, + ) + new_deal = make_new_deal( + deal_id, + hs_object_id="1", + client_booking_reference="AD0226519", + ) + + # Act + result = HubspotDealDiffer.check_for_db_update_trigger( + new_deal=new_deal, + new_company=None, + new_listing=None, + old_deal=old_deal, + ) + + # Assert + assert result is True + + +def test_db_update_trigger__client_booking_reference_unchanged__returns_false() -> None: + deal_id = uuid.uuid4() + + # Arrange + old_deal = make_old_deal( + id=deal_id, + job_no="AD0226519", + ) + new_deal = make_new_deal( + deal_id, + hs_object_id="1", + client_booking_reference="AD0226519", + ) + + # Act + result = HubspotDealDiffer.check_for_db_update_trigger( + new_deal=new_deal, + new_company=None, + new_listing=None, + old_deal=old_deal, + ) + + # Assert + assert result is False