mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
Paginate get_plans to return flat list[PlanSummary] 🟥
This commit is contained in:
parent
8727a78f8b
commit
62acc3ce98
2 changed files with 11 additions and 10 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from datatypes.magicplan.api.response import MagicPlanPlan, PlansListResponse
|
from datatypes.magicplan.api.response import MagicPlanPlan, PlanSummary, PlansListResponse
|
||||||
|
|
||||||
_BASE_URL = "https://cloud.magicplan.app/api/v2"
|
_BASE_URL = "https://cloud.magicplan.app/api/v2"
|
||||||
|
|
||||||
|
|
@ -10,10 +10,8 @@ class MagicPlanClient:
|
||||||
self._session = requests.Session()
|
self._session = requests.Session()
|
||||||
self._session.headers.update({"customer": customer_id, "key": api_key})
|
self._session.headers.update({"customer": customer_id, "key": api_key})
|
||||||
|
|
||||||
def get_plans(self) -> PlansListResponse:
|
def get_plans(self) -> list[PlanSummary]:
|
||||||
r = self._session.get(f"{_BASE_URL}/workgroups/plans")
|
raise NotImplementedError
|
||||||
r.raise_for_status()
|
|
||||||
return PlansListResponse.model_validate(r.json()["data"])
|
|
||||||
|
|
||||||
def get_plan(self, plan_id: str) -> MagicPlanPlan:
|
def get_plan(self, plan_id: str) -> MagicPlanPlan:
|
||||||
return MagicPlanPlan.model_validate(self._fetch_plan(plan_id).json()["data"])
|
return MagicPlanPlan.model_validate(self._fetch_plan(plan_id).json()["data"])
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import pytest
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from backend.magic_plan.magic_plan_client import MagicPlanClient
|
from backend.magic_plan.magic_plan_client import MagicPlanClient
|
||||||
from datatypes.magicplan.api.response import MagicPlanPlan, PlansListResponse
|
from datatypes.magicplan.api.response import MagicPlanPlan, PlanSummary
|
||||||
|
|
||||||
FIXTURE_DIR = Path(__file__).parents[2] / "magic_plan"
|
FIXTURE_DIR = Path(__file__).parents[2] / "magic_plan"
|
||||||
BASE_URL = "https://cloud.magicplan.app/api/v2"
|
BASE_URL = "https://cloud.magicplan.app/api/v2"
|
||||||
|
|
@ -70,7 +70,9 @@ def test_get_plans_calls_correct_url(
|
||||||
# Act
|
# Act
|
||||||
client.get_plans()
|
client.get_plans()
|
||||||
# Assert
|
# Assert
|
||||||
mock_session.get.assert_called_once_with(f"{BASE_URL}/workgroups/plans")
|
mock_session.get.assert_called_once_with(
|
||||||
|
f"{BASE_URL}/workgroups/plans", params={"page": 1}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_get_plans_calls_raise_for_status(
|
def test_get_plans_calls_raise_for_status(
|
||||||
|
|
@ -88,7 +90,7 @@ def test_get_plans_calls_raise_for_status(
|
||||||
mock_session.get.return_value.raise_for_status.assert_called_once()
|
mock_session.get.return_value.raise_for_status.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
def test_get_plans_returns_plans_list_response(
|
def test_get_plans_returns_list_of_plan_summaries(
|
||||||
client: MagicPlanClient, mock_session: MagicMock
|
client: MagicPlanClient, mock_session: MagicMock
|
||||||
) -> None:
|
) -> None:
|
||||||
# Arrange
|
# Arrange
|
||||||
|
|
@ -100,8 +102,9 @@ def test_get_plans_returns_plans_list_response(
|
||||||
# Act
|
# Act
|
||||||
result = client.get_plans()
|
result = client.get_plans()
|
||||||
# Assert
|
# Assert
|
||||||
assert isinstance(result, PlansListResponse)
|
assert isinstance(result, list)
|
||||||
assert len(result.plans) == 1
|
assert len(result) == 1
|
||||||
|
assert isinstance(result[0], PlanSummary)
|
||||||
|
|
||||||
|
|
||||||
def test_get_plans_propagates_http_error(
|
def test_get_plans_propagates_http_error(
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue