Merge pull request #1437 from Hestia-Homes/feature/abri-api-integration

Abri API: hubspot deal differ for AmendJob
This commit is contained in:
Daniel Roth 2026-07-02 18:01:51 +01:00 committed by GitHub
commit fad2264def
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 158 additions and 0 deletions

View file

@ -187,6 +187,25 @@ class HubspotDealDiffer:
return parse_hs_date(new_deal.get("confirmed_survey_date")) is not None
@staticmethod
def check_for_abri_survey_amendment(
new_deal: Dict[str, str],
new_project: Optional[ProjectData],
old_deal: HubspotDealData,
) -> bool:
if not HubspotDealDiffer._is_abri_condition_deal(new_deal, new_project):
return False
# A first-time survey date is a creation, not an amendment.
if old_deal.confirmed_survey_date is None:
return False
new_survey_date = parse_hs_date(new_deal.get("confirmed_survey_date"))
if old_deal.confirmed_survey_date != new_survey_date:
return True
return old_deal.confirmed_survey_time != new_deal.get("confirmed_survey_time")
@staticmethod
def _is_abri_condition_deal(
new_deal: Dict[str, str], new_project: Optional[ProjectData]

View file

@ -548,6 +548,145 @@ def test_abri_survey_creation__non_abri_project_id_with_abri_code__returns_false
assert result is False
# ===================================
# ABRI SURVEY AMENDMENT TRIGGER TESTS
# ===================================
def test_abri_survey_amendment__date_changed_on_abri_deal__returns_true() -> None:
deal_id = uuid.uuid4()
# Arrange
old_deal = make_old_deal(
id=deal_id,
project_code="Abri Condition",
confirmed_survey_date=datetime(2026, 7, 1, tzinfo=timezone.utc),
)
new_deal = make_new_deal(
deal_id,
project_code="Abri Condition",
confirmed_survey_date="2026-07-15",
)
# Act
result = HubspotDealDiffer.check_for_abri_survey_amendment(
new_deal=new_deal,
new_project=None,
old_deal=old_deal,
)
# Assert
assert result is True
def test_abri_survey_amendment__non_abri_deal__returns_false() -> None:
deal_id = uuid.uuid4()
# Arrange
old_deal = make_old_deal(
id=deal_id,
project_code="Southern Retrofit",
confirmed_survey_date=datetime(2026, 7, 1, tzinfo=timezone.utc),
)
new_deal = make_new_deal(
deal_id,
project_code="Southern Retrofit",
confirmed_survey_date="2026-07-15",
)
# Act
result = HubspotDealDiffer.check_for_abri_survey_amendment(
new_deal=new_deal,
new_project=None,
old_deal=old_deal,
)
# Assert
assert result is False
def test_abri_survey_amendment__date_and_time_unchanged__returns_false() -> None:
deal_id = uuid.uuid4()
# Arrange
old_deal = make_old_deal(
id=deal_id,
project_code="Abri Condition",
confirmed_survey_date=datetime(2026, 7, 15, tzinfo=timezone.utc),
confirmed_survey_time="09:30",
)
new_deal = make_new_deal(
deal_id,
project_code="Abri Condition",
confirmed_survey_date="2026-07-15",
confirmed_survey_time="09:30",
)
# Act
result = HubspotDealDiffer.check_for_abri_survey_amendment(
new_deal=new_deal,
new_project=None,
old_deal=old_deal,
)
# Assert
assert result is False
def test_abri_survey_amendment__time_changed_on_abri_deal__returns_true() -> None:
deal_id = uuid.uuid4()
# Arrange
old_deal = make_old_deal(
id=deal_id,
project_code="Abri Condition",
confirmed_survey_date=datetime(2026, 7, 15, tzinfo=timezone.utc),
confirmed_survey_time="09:30",
)
new_deal = make_new_deal(
deal_id,
project_code="Abri Condition",
confirmed_survey_date="2026-07-15",
confirmed_survey_time="14:00",
)
# Act
result = HubspotDealDiffer.check_for_abri_survey_amendment(
new_deal=new_deal,
new_project=None,
old_deal=old_deal,
)
# Assert
assert result is True
def test_abri_survey_amendment__date_first_set_on_abri_deal__returns_false() -> None:
deal_id = uuid.uuid4()
# Arrange
old_deal = make_old_deal(
id=deal_id,
project_code="Abri Condition",
confirmed_survey_date=None,
)
new_deal = make_new_deal(
deal_id,
project_code="Abri Condition",
confirmed_survey_date="2026-07-15",
)
# Act
result = HubspotDealDiffer.check_for_abri_survey_amendment(
new_deal=new_deal,
new_project=None,
old_deal=old_deal,
)
# Assert
assert result is False
# =======================
# DB UPDATE TRIGGER TESTS
# =======================