Model/etl/hubspot/tests/test_hubspot_data_to_db.py
Daniel Roth a3985389ab The deal row names the job number client_booking_reference, matching HubSpot and the schema 🟪
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 12:43:40 +00:00

129 lines
3.6 KiB
Python

from etl.hubspot.hubspotDataTodB import HubspotDataToDb
from etl.hubspot.project_data import ProjectData
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="MOCK_DEAL_ID", 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="MOCK_DEAL_ID", 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"
def test_build_new_deal__project_sets_project_id() -> None:
new_deal = _make_instance()._build_new_deal(
deal_id="MOCK_DEAL_ID",
deal_data={},
listing=None,
company=None,
project=ProjectData(project_id="proj-1", name="Project One"),
)
assert new_deal.project_id == "proj-1"
def test_build_new_deal__no_project__project_id_none() -> None:
new_deal = _make_instance()._build_new_deal(
deal_id="MOCK_DEAL_ID",
deal_data={},
listing=None,
company=None,
project=None,
)
assert new_deal.project_id is None
def test_update_existing_deal__project_sets_project_id() -> None:
existing = HubspotDealData(deal_id="MOCK_DEAL_ID")
_make_instance()._update_existing_deal(
existing=existing,
deal_data={},
listing=None,
company=None,
project=ProjectData(project_id="proj-1", name="Project One"),
)
assert existing.project_id == "proj-1"
def test_update_existing_deal__no_project__clears_project_id() -> None:
existing = HubspotDealData(deal_id="MOCK_DEAL_ID", project_id="old-proj")
_make_instance()._update_existing_deal(
existing=existing,
deal_data={},
listing=None,
company=None,
project=None,
)
assert existing.project_id is None
def test_update_existing_deal__client_booking_reference_maps_to_job_no() -> None:
existing = HubspotDealData(deal_id="MOCK_DEAL_ID", client_booking_reference=None)
deal_data = {"client_booking_reference": "AD0226519"}
_make_instance()._update_existing_deal(
existing=existing,
deal_data=deal_data,
listing=None,
company=None,
)
assert existing.client_booking_reference == "AD0226519"
def test_update_existing_deal__client_booking_reference_cleared__nulls_job_no() -> None:
existing = HubspotDealData(
deal_id="MOCK_DEAL_ID", client_booking_reference="AD0226519"
)
deal_data = {}
_make_instance()._update_existing_deal(
existing=existing,
deal_data=deal_data,
listing=None,
company=None,
)
assert existing.client_booking_reference is None
def test_build_new_deal__client_booking_reference_maps_to_job_no() -> None:
new_deal = _make_instance()._build_new_deal(
deal_id="MOCK_DEAL_ID",
deal_data={"client_booking_reference": "AD0226519"},
listing=None,
company=None,
project=None,
)
assert new_deal.client_booking_reference == "AD0226519"