mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
correct magicplan orchestration tests
This commit is contained in:
parent
174ef26075
commit
09e31c2a98
7 changed files with 410325 additions and 40 deletions
|
|
@ -22,7 +22,7 @@ def _load_fixture(name: str) -> dict[str, Any]:
|
|||
def _make_client(mock_session: MagicMock) -> MagicPlanClient:
|
||||
mock_session.headers = {}
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_client.requests.Session",
|
||||
"infrastructure.magic_plan.magic_plan_client.requests.Session",
|
||||
return_value=mock_session,
|
||||
):
|
||||
return MagicPlanClient(customer_id=CUSTOMER_ID, api_key=API_KEY)
|
||||
|
|
|
|||
136742
tests/magic_plan/magicplan_api_plan_response_example.json
Normal file
136742
tests/magic_plan/magicplan_api_plan_response_example.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
136742
tests/magic_plan/magicplan_api_plan_response_example_3.json
Normal file
136742
tests/magic_plan/magicplan_api_plan_response_example_3.json
Normal file
File diff suppressed because one or more lines are too long
136742
tests/magic_plan/magicplan_api_plan_response_example_4.json
Normal file
136742
tests/magic_plan/magicplan_api_plan_response_example_4.json
Normal file
File diff suppressed because one or more lines are too long
39
tests/magic_plan/magicplan_api_plans_response_example.json
Normal file
39
tests/magic_plan/magicplan_api_plans_response_example.json
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"data": {
|
||||
"paging": {
|
||||
"page": 1,
|
||||
"next_page": false,
|
||||
"count": 1
|
||||
},
|
||||
"plans": [
|
||||
{
|
||||
"id": "9f9889ff-793e-4e9a-a6f0-e22f5b0f5365",
|
||||
"project_id": "269422e7-45b6-4582-b124-405053dcd967",
|
||||
"name": "11, Br1 3lp",
|
||||
"address": {
|
||||
"street": "11 Station Road",
|
||||
"street_number": null,
|
||||
"postal_code": "BR1 3LP",
|
||||
"city": "Bromley",
|
||||
"country": "GB",
|
||||
"longitude": 0.01593668,
|
||||
"latitude": 51.40901033
|
||||
},
|
||||
"creation_date": "2026-04-28T09:35:44+00:00",
|
||||
"update_date": "2026-05-05T12:53:36+00:00",
|
||||
"thumbnail_url": "https://s3.amazonaws.com/prod.plans.sensopia.com/9f9889ff-793e-4e9a-a6f0-e22f5b0f5365/plan.thumb",
|
||||
"public_url": "https://cloud.magicplan.app/plan/9f9889ff-793e-4e9a-a6f0-e22f5b0f5365",
|
||||
"cloud_url": "https://cloud.magicplan.app/projects/9f9889ff-793e-4e9a-a6f0-e22f5b0f5365",
|
||||
"3d_url": "https://3d.magicplan.app/#embed/?key=MmFkZDJjNGRmYWRjM2Y5ZDAwMjEyZGRlY2I3NmJjOWFjOWRmMDdkNzIxZTViZDdhNTgxZDBiYWE1YTYzZTJmY%2FJNEogVfW%2FZwVfY25qc24oCKnfVxiF%2FupeeA7vwS8FECF0L9E7DUFE%2ByzEYzYaoVc%2FbtsZ%2FqZOSPopiR4OqD3zbCziU0QTydELS32cnSFOT",
|
||||
"workgroup_id": "677d01685458a",
|
||||
"team_id": null,
|
||||
"created_by": {
|
||||
"id": "b19771e9-1aad-45a5-9a41-f01a835172ea",
|
||||
"firstname": null,
|
||||
"lastname": null,
|
||||
"email": "archie.ratcliff@domna.homes"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -95,12 +95,14 @@ def test_run_fetches_plan_with_matched_id(
|
|||
mock_client.get_plan.return_value = api_magic_plan
|
||||
service = _make_service(mock_client)
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
service.run(_make_request())
|
||||
# Assert
|
||||
|
|
@ -118,12 +120,14 @@ def test_run_returns_mapped_plan(
|
|||
mock_client.get_plan.return_value = api_magic_plan
|
||||
service = _make_service(mock_client)
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
result = service.run(_make_request())
|
||||
# Assert
|
||||
|
|
@ -131,7 +135,7 @@ def test_run_returns_mapped_plan(
|
|||
assert result.uid == PLAN_ID
|
||||
|
||||
|
||||
def test_run_calls_save_plan_with_mapped_plan(
|
||||
def test_run_calls_save_with_mapped_plan(
|
||||
mock_client: MagicMock,
|
||||
api_magic_plan: MagicPlanPlan,
|
||||
plan_summary: PlanSummary,
|
||||
|
|
@ -140,18 +144,21 @@ def test_run_calls_save_plan_with_mapped_plan(
|
|||
mock_client.get_plans.return_value = [plan_summary]
|
||||
mock_client.get_plan.return_value = api_magic_plan
|
||||
service = _make_service(mock_client)
|
||||
mock_repo = MagicMock()
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan") as mock_save, patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository",
|
||||
return_value=mock_repo,
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
service.run(_make_request())
|
||||
# Assert — save_plan called with a Plan whose uid matches
|
||||
call_args = mock_save.call_args
|
||||
saved_plan: Plan = call_args[0][1]
|
||||
# Assert — save called with a Plan whose uid matches
|
||||
saved_plan: Plan = mock_repo.save.call_args[0][0]
|
||||
assert saved_plan.uid == PLAN_ID
|
||||
|
||||
|
||||
|
|
@ -165,12 +172,14 @@ def test_run_accepts_uprn_without_error(
|
|||
mock_client.get_plan.return_value = api_magic_plan
|
||||
service = _make_service(mock_client)
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
service.run(_make_request(uprn="100023336956"))
|
||||
|
||||
|
|
@ -188,12 +197,14 @@ def test_run_uploads_to_s3_with_uprn_key(
|
|||
request = _make_request(uprn="100023336956")
|
||||
service = MagicPlanService(client=mock_client, s3_bucket=S3_BUCKET)
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
) as mock_s3:
|
||||
# Act
|
||||
service.run(request)
|
||||
|
|
@ -216,12 +227,14 @@ def test_run_uploads_to_s3_with_deal_id_key_when_uprn_absent(
|
|||
request = _make_request(hubspot_deal_id="deal-456", uprn=None)
|
||||
service = MagicPlanService(client=mock_client, s3_bucket=S3_BUCKET)
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
) as mock_s3:
|
||||
# Act
|
||||
service.run(request)
|
||||
|
|
@ -248,12 +261,14 @@ def test_run_creates_uploaded_file_record(
|
|||
service = MagicPlanService(client=mock_client, s3_bucket=S3_BUCKET)
|
||||
mock_session = MagicMock()
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan"), patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
) as mock_db, patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
mock_db.return_value.__enter__.return_value = mock_session
|
||||
# Act
|
||||
|
|
@ -276,7 +291,7 @@ def test_run_creates_uploaded_file_record(
|
|||
assert uploaded_file.hubspot_deal_id == "deal-789"
|
||||
|
||||
|
||||
def test_run_passes_flushed_uploaded_file_id_to_save_plan(
|
||||
def test_run_passes_flushed_uploaded_file_id_to_save(
|
||||
mock_client: MagicMock,
|
||||
plan_summary: PlanSummary,
|
||||
) -> None:
|
||||
|
|
@ -294,18 +309,22 @@ def test_run_passes_flushed_uploaded_file_id_to_save_plan(
|
|||
obj.id = 42
|
||||
|
||||
mock_session.flush.side_effect = simulate_flush
|
||||
mock_repo = MagicMock()
|
||||
|
||||
with patch(
|
||||
"backend.magic_plan.magic_plan_service.find_matching_plan",
|
||||
"orchestration.magic_plan_orchestrator.find_matching_plan",
|
||||
return_value=plan_summary,
|
||||
), patch("backend.magic_plan.magic_plan_service.save_plan") as mock_save, patch(
|
||||
"backend.magic_plan.magic_plan_service.db_session"
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.MagicPlanPostgresRepository",
|
||||
return_value=mock_repo,
|
||||
), patch(
|
||||
"orchestration.magic_plan_orchestrator.db_session"
|
||||
) as mock_db, patch(
|
||||
"backend.magic_plan.magic_plan_service.save_data_to_s3"
|
||||
"orchestration.magic_plan_orchestrator.save_data_to_s3"
|
||||
):
|
||||
mock_db.return_value.__enter__.return_value = mock_session
|
||||
# Act
|
||||
service.run(_make_request())
|
||||
|
||||
# Assert
|
||||
assert mock_save.call_args[0][2] == 42
|
||||
# Assert — save called with the flushed uploaded_file_id
|
||||
assert mock_repo.save.call_args[0][1] == 42
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue