Upload gzip-compressed MagicPlan JSON to S3 - only make one API call 🟪

This commit is contained in:
Daniel Roth 2026-05-08 15:07:09 +00:00
parent 9f62e3c31a
commit ce2b61d60b
2 changed files with 8 additions and 5 deletions

View file

@ -1,4 +1,5 @@
import gzip
import json
from datetime import datetime, timezone
from typing import Optional
@ -46,8 +47,10 @@ class MagicPlanService:
if matched is None:
raise ValueError(f"No MagicPlan found for address: {address!r}")
magic_plan: MagicPlanPlan = self._client.get_plan(matched.id)
raw_bytes: bytes = self._client.get_plan_raw(matched.id)
magic_plan: MagicPlanPlan = MagicPlanPlan.model_validate(
json.loads(raw_bytes)["data"]
)
plan: Plan = map_plan(magic_plan)
uploaded_file: UploadedFile = self._upload_raw_plan_json(

View file

@ -49,7 +49,9 @@ def plan_summary() -> PlanSummary:
@pytest.fixture()
def mock_client() -> MagicMock:
client = MagicMock(spec=MagicPlanClient)
client.get_plan_raw.return_value = b"{}"
client.get_plan_raw.return_value = (
FIXTURE_DIR / "magicplan_api_plan_response_example.json"
).read_bytes()
return client
@ -102,7 +104,7 @@ def test_run_fetches_plan_with_matched_id(
):
service.run(_make_request())
# Assert
mock_client.get_plan.assert_called_once_with(plan_summary.id)
mock_client.get_plan_raw.assert_called_once_with(plan_summary.id)
def test_run_returns_mapped_plan(
@ -183,8 +185,6 @@ def test_run_uploads_to_s3_with_uprn_key(
) -> None:
# Arrange
mock_client.get_plans.return_value.plans = [plan_summary]
mock_client.get_plan.return_value = api_magic_plan
mock_client.get_plan_raw.return_value = b'{"raw": "data"}'
request = _make_request(uprn="100023336956")
service = MagicPlanService(client=mock_client, s3_bucket=S3_BUCKET)
with patch(