From 508f3f285934908f5ebeab2b9437dac2c108184e Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Wed, 18 Feb 2026 10:40:50 +0000 Subject: [PATCH] make choose cheapest relevant plan method public as it's called from outside the module --- backend/categorisation/processor.py | 36 +++++++++---------- .../tests/test_prioritised_plan_selected.py | 4 +-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/backend/categorisation/processor.py b/backend/categorisation/processor.py index 539f7a68..02116d61 100644 --- a/backend/categorisation/processor.py +++ b/backend/categorisation/processor.py @@ -26,12 +26,29 @@ def process_portfolio( if not property_plans: raise ValueError(f"No plans for property {uprn}") - cheapest_plan = _choose_cheapest_relevant_plan( + cheapest_plan = choose_cheapest_relevant_plan( property_plans, plan_priority_order ) _update_default_flags(property_plans, cheapest_plan) +def choose_cheapest_relevant_plan( + plans: List[Plan], plan_priority_order: Optional[List[int]] = [] +) -> Plan: + plans_to_consider: List[Plan] = [p for p in plans if p.is_compliant] or plans + + def plan_cost(plan: Plan) -> float: + return ( + plan.record.cost_of_works + if plan.record.cost_of_works is not None + else float("inf") + ) + + cheapest_plan = min(plans_to_consider, key=plan_cost) + + return cheapest_plan + + def _load_plans_for_portfolio(portfolio_id: int) -> List[Plan]: plans: List[Plan] = [] @@ -68,23 +85,6 @@ def _group_plans_by_property(plans: List[Plan]) -> Dict[int, List[Plan]]: return grouped -def _choose_cheapest_relevant_plan( - plans: List[Plan], plan_priority_order: Optional[List[int]] = [] -) -> Plan: - plans_to_consider: List[Plan] = [p for p in plans if p.is_compliant] or plans - - def plan_cost(plan: Plan) -> float: - return ( - plan.record.cost_of_works - if plan.record.cost_of_works is not None - else float("inf") - ) - - cheapest_plan = min(plans_to_consider, key=plan_cost) - - return cheapest_plan - - def _update_default_flags(plans: List[Plan], cheapest_plan: Plan) -> None: plans_to_update: List[Plan] = [] diff --git a/backend/categorisation/tests/test_prioritised_plan_selected.py b/backend/categorisation/tests/test_prioritised_plan_selected.py index 03bca666..eb41194c 100644 --- a/backend/categorisation/tests/test_prioritised_plan_selected.py +++ b/backend/categorisation/tests/test_prioritised_plan_selected.py @@ -7,7 +7,7 @@ from backend.app.domain.classes.scenario import Scenario from backend.app.domain.records.plan_record import PlanRecord from backend.app.domain.records.scenario_record import ScenarioRecord from backend.app.db.models.portfolio import Epc, PortfolioGoal -from backend.categorisation.processor import _choose_cheapest_relevant_plan +from backend.categorisation.processor import choose_cheapest_relevant_plan @pytest.fixture @@ -79,7 +79,7 @@ def test_prioritised_plan_selected(created_at_datetime: datetime) -> None: expected_default_plan_id = 2 # act - actual_default_plan = _choose_cheapest_relevant_plan( + actual_default_plan = choose_cheapest_relevant_plan( plans=[epc_c_plan, minor_works_plan], plan_priority_order=plan_priority_order, )