mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-22 08:48:38 +00:00
Sync Design Constraints, Planning Comments, Planning Status, and Planning Suggested Approach, matching the columns added in Hestia-Homes/assessment-model#377. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
197 lines
6.1 KiB
Python
197 lines
6.1 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"
|
|
|
|
|
|
def test_build_new_deal__planning_fields_mapped() -> None:
|
|
new_deal = _make_instance()._build_new_deal(
|
|
deal_id="MOCK_DEAL_ID",
|
|
deal_data={
|
|
"planning_authority": "Test Council",
|
|
"designated_area": "Conservation Area",
|
|
"article_pd_rights": "Removed",
|
|
"listed_building": "Grade II",
|
|
"design_constraints": "Sloped site",
|
|
"planning_comments": "Awaiting decision",
|
|
"planning_status": "Submitted",
|
|
"planning_suggested_approach": "Full application",
|
|
},
|
|
listing=None,
|
|
company=None,
|
|
project=None,
|
|
)
|
|
|
|
assert new_deal.planning_authority == "Test Council"
|
|
assert new_deal.designated_area == "Conservation Area"
|
|
assert new_deal.article_4_pd_rights == "Removed"
|
|
assert new_deal.listed_building == "Grade II"
|
|
assert new_deal.design_constraints == "Sloped site"
|
|
assert new_deal.planning_comments == "Awaiting decision"
|
|
assert new_deal.planning_status == "Submitted"
|
|
assert new_deal.planning_suggested_approach == "Full application"
|
|
|
|
|
|
def test_update_existing_deal__planning_fields_overwritten() -> None:
|
|
existing = HubspotDealData(
|
|
deal_id="MOCK_DEAL_ID",
|
|
planning_authority="Old Council",
|
|
designated_area="Old Area",
|
|
article_4_pd_rights="Old Rights",
|
|
listed_building="Old Listing",
|
|
design_constraints="Old Constraints",
|
|
planning_comments="Old Comments",
|
|
planning_status="Old Status",
|
|
planning_suggested_approach="Old Approach",
|
|
)
|
|
deal_data = {
|
|
"planning_authority": "New Council",
|
|
"designated_area": "New Area",
|
|
"article_pd_rights": "New Rights",
|
|
"listed_building": "New Listing",
|
|
"design_constraints": "New Constraints",
|
|
"planning_comments": "New Comments",
|
|
"planning_status": "New Status",
|
|
"planning_suggested_approach": "New Approach",
|
|
}
|
|
|
|
_make_instance()._update_existing_deal(
|
|
existing=existing,
|
|
deal_data=deal_data,
|
|
listing=None,
|
|
company=None,
|
|
)
|
|
|
|
assert existing.planning_authority == "New Council"
|
|
assert existing.designated_area == "New Area"
|
|
assert existing.article_4_pd_rights == "New Rights"
|
|
assert existing.listed_building == "New Listing"
|
|
assert existing.design_constraints == "New Constraints"
|
|
assert existing.planning_comments == "New Comments"
|
|
assert existing.planning_status == "New Status"
|
|
assert existing.planning_suggested_approach == "New Approach"
|