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