From 39f37f1668907db733ffa602e1a2b84c9e766fd0 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Wed, 8 Apr 2026 15:26:32 +0000 Subject: [PATCH] =?UTF-8?q?diff=20checker=20for=20pashub=20trigger=20?= =?UTF-8?q?=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tests/test_hubspot_deal_differ.py | 424 ++++++++++++++++++ 1 file changed, 424 insertions(+) create mode 100644 backend/hubspot_trigger_orchestrator/tests/test_hubspot_deal_differ.py diff --git a/backend/hubspot_trigger_orchestrator/tests/test_hubspot_deal_differ.py b/backend/hubspot_trigger_orchestrator/tests/test_hubspot_deal_differ.py new file mode 100644 index 00000000..ddca766a --- /dev/null +++ b/backend/hubspot_trigger_orchestrator/tests/test_hubspot_deal_differ.py @@ -0,0 +1,424 @@ +from datetime import datetime +from typing import Dict +import uuid + +from backend.app.db.models.organisation import HubspotDealData +from backend.hubspot_trigger_orchestrator.hubspot_deal_differ import HubspotDealDiffer + + +def test_pashub_trigger__outcome_note_added__returns_false() -> None: + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "outcome_notes": "test note", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__pashub_link_changed__returns_true() -> None: + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.bbc.co.uk", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__coordination_completed_and_pashub_link_set__returns_true() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + coordination_status="random", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "coordination_status": "v1 ioe/mtp complete", + "pashub_link": "www.google.co.uk", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__coordination_completed_and_pashub_link_set__returns_true_2() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + coordination_status="random", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "coordination_status": "v2 ioe/mtp complete", + "pashub_link": "www.google.co.uk", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__coordination_completed_and_pashub_link_not_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + coordination_status="random", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "coordination_status": "v2 ioe/mtp complete", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__coordination_status_not_completed_and_pashub_link_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + coordination_status="random", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "coordination_status": "not complete", + "pashub_link": "www.google.co.uk", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__design_completed_and_pashub_link_set__returns_true() -> None: + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.google.co.uk", + "design_status": "uploaded", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__design_completed_and_pashub_link_not_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "design_status": "uploaded", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__design_not_completed_and_pashub_link_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.google.co.uk", + "design_status": "not uploaded", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__lodgement_completed_and_pashub_link_set__returns_true() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.google.co.uk", + "lodgement_status": "lodgement complete", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__lodgement_completed_and_pashub_link_set__returns_true_2() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.google.co.uk", + "lodgement_status": "measures lodged", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = True + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__lodgement_completed_and_pashub_link_not_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "design_status": "lodgement complete", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output + + +def test_pashub_trigger__lodgement_not_completed_and_pashub_link_set__returns_false() -> ( + None +): + # arrange + deal_id = uuid.uuid4() + + old_deal = HubspotDealData( + id=deal_id, + deal_id="1", + pashub_link="www.google.co.uk", + created_at=datetime(2025, 12, 1, 12, 0, 0), + updated_at=datetime(2025, 12, 1, 12, 0, 0), + ) + new_deal: Dict[str, str] = { + "id": str(deal_id), + "deal_id": "1", + "pashub_link": "www.google.co.uk", + "lodgement_status": "lodgement not complete", + "created_at": datetime(2025, 12, 1, 12, 0, 0).isoformat(), + "updated_at": datetime(2025, 12, 1, 12, 30, 0).isoformat(), + } + + expected_output = False + + # act + actual_output: bool = HubspotDealDiffer.check_for_pashub_trigger( + new_deal=new_deal, old_deal=old_deal + ) + + # assert + assert actual_output == expected_output