From 0a97c2d21f635a35865874ff186ea3b8595708c7 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 1 May 2026 12:18:24 +0000 Subject: [PATCH 1/3] fix for hubspot deal properties not updated when they were unset --- etl/hubspot/hubspotDataTodB.py | 10 ++++-- etl/hubspot/scripts/scraper/main.py | 1 + etl/hubspot/tests/test_hubspot_data_to_db.py | 34 ++++++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 etl/hubspot/tests/test_hubspot_data_to_db.py diff --git a/etl/hubspot/hubspotDataTodB.py b/etl/hubspot/hubspotDataTodB.py index 278fbe43..b160d563 100644 --- a/etl/hubspot/hubspotDataTodB.py +++ b/etl/hubspot/hubspotDataTodB.py @@ -95,8 +95,12 @@ class HubspotDataToDb: with db_read_session() as session: deal_id = deal_data.get("hs_object_id") - self._sync_owner_to_db(deal_data.get("coordinator_user"), hubspot_client, session) - self._sync_owner_to_db(deal_data.get("designer_user"), hubspot_client, session) + self._sync_owner_to_db( + deal_data.get("coordinator_user"), hubspot_client, session + ) + self._sync_owner_to_db( + deal_data.get("designer_user"), hubspot_client, session + ) statement = select(HubspotDealData).where( HubspotDealData.deal_id == deal_id @@ -256,7 +260,7 @@ class HubspotDataToDb: ), "domna_survey_date": parse_hs_date(deal_data.get("osmosis_survey_date")), }.items(): - setattr(existing, attr, value or getattr(existing, attr)) + setattr(existing, attr, value) def _build_new_deal( self, diff --git a/etl/hubspot/scripts/scraper/main.py b/etl/hubspot/scripts/scraper/main.py index f7dc1076..7a18d8f2 100644 --- a/etl/hubspot/scripts/scraper/main.py +++ b/etl/hubspot/scripts/scraper/main.py @@ -25,6 +25,7 @@ def handler(body: dict[str, Any], context: Any) -> None: payload = HubspotTriggerOrchestratorTriggerRequest.model_validate(body) hubspot_deal_id: str = payload.hubspot_deal_id + hubspot_deal_id = "379575248109" db_deal: Optional[HubspotDealData] = db_client.find_deal_with_deal_id( hubspot_deal_id diff --git a/etl/hubspot/tests/test_hubspot_data_to_db.py b/etl/hubspot/tests/test_hubspot_data_to_db.py new file mode 100644 index 00000000..e158f1cb --- /dev/null +++ b/etl/hubspot/tests/test_hubspot_data_to_db.py @@ -0,0 +1,34 @@ +from etl.hubspot.hubspotDataTodB import HubspotDataToDb +from backend.app.db.models.hubspot_deal_data import HubspotDealData + + +def _make_instance() -> HubspotDataToDb: + return HubspotDataToDb.__new__(HubspotDataToDb) + + +def test_update_existing_deal__designer_cleared_to_none__overwrites_existing() -> None: + existing = HubspotDealData(deal_id="379575248109", designer="Old Designer") + deal_data = {"designer_user": None} + + _make_instance()._update_existing_deal( + existing=existing, + deal_data=deal_data, + listing=None, + company=None, + ) + + assert existing.designer is None + + +def test_update_existing_deal__designer_set__overwrites_existing() -> None: + existing = HubspotDealData(deal_id="1", designer="Old Designer") + deal_data = {"designer_user": "New Designer"} + + _make_instance()._update_existing_deal( + existing=existing, + deal_data=deal_data, + listing=None, + company=None, + ) + + assert existing.designer == "New Designer" From d1155e7d548a1387e8cd087f6bd49f459b82b378 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 1 May 2026 12:28:08 +0000 Subject: [PATCH 2/3] remove debug hardcoded deal id --- etl/hubspot/scripts/scraper/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/etl/hubspot/scripts/scraper/main.py b/etl/hubspot/scripts/scraper/main.py index 7a18d8f2..f7dc1076 100644 --- a/etl/hubspot/scripts/scraper/main.py +++ b/etl/hubspot/scripts/scraper/main.py @@ -25,7 +25,6 @@ def handler(body: dict[str, Any], context: Any) -> None: payload = HubspotTriggerOrchestratorTriggerRequest.model_validate(body) hubspot_deal_id: str = payload.hubspot_deal_id - hubspot_deal_id = "379575248109" db_deal: Optional[HubspotDealData] = db_client.find_deal_with_deal_id( hubspot_deal_id From 78d6f4f93978d1ae3676c91d7817d83ab08ed691 Mon Sep 17 00:00:00 2001 From: Jun-te Kim Date: Fri, 1 May 2026 13:52:05 +0000 Subject: [PATCH 3/3] improved deal_id so its clear its not a real one --- etl/hubspot/tests/test_hubspot_data_to_db.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etl/hubspot/tests/test_hubspot_data_to_db.py b/etl/hubspot/tests/test_hubspot_data_to_db.py index e158f1cb..339e0377 100644 --- a/etl/hubspot/tests/test_hubspot_data_to_db.py +++ b/etl/hubspot/tests/test_hubspot_data_to_db.py @@ -7,7 +7,7 @@ def _make_instance() -> HubspotDataToDb: def test_update_existing_deal__designer_cleared_to_none__overwrites_existing() -> None: - existing = HubspotDealData(deal_id="379575248109", designer="Old Designer") + existing = HubspotDealData(deal_id="MOCK_DEAL_ID", designer="Old Designer") deal_data = {"designer_user": None} _make_instance()._update_existing_deal( @@ -21,7 +21,7 @@ def test_update_existing_deal__designer_cleared_to_none__overwrites_existing() - def test_update_existing_deal__designer_set__overwrites_existing() -> None: - existing = HubspotDealData(deal_id="1", designer="Old Designer") + existing = HubspotDealData(deal_id="MOCK_DEAL_ID", designer="Old Designer") deal_data = {"designer_user": "New Designer"} _make_instance()._update_existing_deal(