Skip to content

Commit 834cb21

Browse files
committed
GH-257: Get status for authority's schemes from the API
1 parent 064a253 commit 834cb21

4 files changed

Lines changed: 19 additions & 5 deletions

File tree

schemes/infrastructure/api/schemes/schemes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any
22

3-
from schemes.domain.schemes.schemes import Scheme, SchemeRepository, Status
3+
from schemes.domain.schemes.schemes import Scheme, SchemeRepository
44
from schemes.infrastructure.api.authorities import AuthorityModel
55
from schemes.infrastructure.api.base import BaseModel
66
from schemes.infrastructure.api.collections import CollectionModel
@@ -46,13 +46,13 @@ def to_domain(
4646
class CapitalSchemeItemModel(BaseModel):
4747
reference: str
4848
overview: CapitalSchemeOverviewModel
49+
status: CapitalSchemeStatusModel
4950
authority_review: CapitalSchemeAuthorityReviewModel | None = None
5051

5152
def to_domain(
5253
self, authority_models: list[AuthorityModel], funding_programme_item_models: list[FundingProgrammeItemModel]
5354
) -> Scheme:
54-
# status is always active to match filters in get capital schemes by bid submitting authority
55-
scheme = Scheme(reference=self.reference, status=Status.ACTIVE)
55+
scheme = Scheme(reference=self.reference, status=self.status.status.to_domain())
5656
scheme.overview.update_overview(self.overview.to_domain(authority_models, funding_programme_item_models))
5757
# TODO: financials, milestones, outputs
5858

tests/e2e/api_server/authorities.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
CapitalSchemeAuthorityReviewModel,
1111
CapitalSchemeModel,
1212
CapitalSchemeOverviewModel,
13+
CapitalSchemeStatusModel,
1314
capital_schemes,
1415
)
1516
from tests.e2e.api_server.collections import CollectionModel
@@ -26,6 +27,7 @@ class CapitalSchemeItemModel(BaseModel):
2627
id: Annotated[AnyUrl, Field(alias="@id")]
2728
reference: str
2829
overview: CapitalSchemeOverviewModel
30+
status: CapitalSchemeStatusModel
2931
authority_review: CapitalSchemeAuthorityReviewModel | None
3032

3133

@@ -106,5 +108,6 @@ def _to_capital_scheme_item(capital_scheme: CapitalSchemeModel) -> CapitalScheme
106108
id=AnyUrl(url_for("capital_schemes.get_capital_scheme", reference=capital_scheme.reference, _external=True)),
107109
reference=capital_scheme.reference,
108110
overview=capital_scheme.overview,
111+
status=capital_scheme.status,
109112
authority_review=capital_scheme.authority_review,
110113
)

tests/unit/infrastructure/api/builders.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,12 @@ def build_capital_scheme_json(
140140
def build_capital_scheme_item_json(
141141
reference: str = "dummy",
142142
overview: dict[str, Any] | None = None,
143+
status: dict[str, Any] | None = None,
143144
authority_review: dict[str, Any] | None = None,
144145
) -> dict[str, Any]:
145146
return {
146147
"reference": reference,
147148
"overview": overview or build_overview_json(),
149+
"status": status or build_status_json(),
148150
"authorityReview": authority_review if authority_review else None,
149151
}

tests/unit/infrastructure/api/schemes/test_schemes.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,9 @@ def test_to_domain_sets_authority_review(self) -> None:
259259

260260
class TestCapitalSchemeItemModel:
261261
def test_to_domain(self) -> None:
262-
capital_scheme_item_model = CapitalSchemeItemModel(reference="ATE00001", overview=build_overview_model())
262+
capital_scheme_item_model = CapitalSchemeItemModel(
263+
reference="ATE00001", overview=build_overview_model(), status=build_status_model()
264+
)
263265

264266
scheme = capital_scheme_item_model.to_domain([build_authority_model()], [build_funding_programme_item_model()])
265267

@@ -283,6 +285,7 @@ def test_to_domain_sets_overview_revision(self) -> None:
283285
funding_programme=AnyUrl("https://api.example/funding-programmes/ATF4"),
284286
type=CapitalSchemeTypeModel.CONSTRUCTION,
285287
),
288+
status=build_status_model(),
286289
)
287290

288291
scheme = capital_scheme_item_model.to_domain([authority_model], [funding_programme_item_model])
@@ -296,7 +299,11 @@ def test_to_domain_sets_overview_revision(self) -> None:
296299
)
297300

298301
def test_to_domain_sets_status(self) -> None:
299-
capital_scheme_item_model = CapitalSchemeItemModel(reference="ATE00001", overview=build_overview_model())
302+
capital_scheme_item_model = CapitalSchemeItemModel(
303+
reference="ATE00001",
304+
overview=build_overview_model(),
305+
status=CapitalSchemeStatusModel(status=StatusModel.ACTIVE),
306+
)
300307

301308
scheme = capital_scheme_item_model.to_domain([build_authority_model()], [build_funding_programme_item_model()])
302309

@@ -306,6 +313,7 @@ def test_to_domain_sets_authority_review(self) -> None:
306313
capital_scheme_item_model = CapitalSchemeItemModel(
307314
reference="ATE00001",
308315
overview=build_overview_model(),
316+
status=build_status_model(),
309317
authority_review=CapitalSchemeAuthorityReviewModel(
310318
review_date=datetime(2020, 1, 2, tzinfo=UTC), source=DataSourceModel.AUTHORITY_UPDATE
311319
),
@@ -639,6 +647,7 @@ async def test_get_schemes_by_authority_sets_status(
639647
build_capital_scheme_item_json(
640648
reference="ATE00001",
641649
overview=build_overview_json(bid_submitting_authority=f"{api_base_url}/authorities/LIV"),
650+
status=build_status_json(status="active"),
642651
)
643652
]
644653
},

0 commit comments

Comments
 (0)