From 45dab78f4e751fd0e3678d3be58d807f91edc571 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 7 Jul 2026 11:37:18 +0000 Subject: [PATCH] =?UTF-8?q?EPC-derived=20property=20type=20prefers=20lodge?= =?UTF-8?q?d=20over=20predicted=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- .../app/modelling/test_property_filters.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/backend/app/modelling/test_property_filters.py b/tests/backend/app/modelling/test_property_filters.py index 3b2ec2f73..d7c77212a 100644 --- a/tests/backend/app/modelling/test_property_filters.py +++ b/tests/backend/app/modelling/test_property_filters.py @@ -149,6 +149,34 @@ def test_property_type_override_beats_the_lodged_epc(db_engine: Engine) -> None: assert [p.property_id for p in resolved] == [overridden] +def test_epc_property_type_prefers_lodged_over_predicted(db_engine: Engine) -> None: + # arrange — one property has both sources; the other only a prediction + with Session(db_engine) as session: + both = _seed_property(session, portfolio_id=814) + _seed_epc(session, property_id=both, source="lodged", property_type="House") + _seed_epc( + session, property_id=both, source="predicted", property_type="Bungalow" + ) + predicted_only = _seed_property(session, portfolio_id=814) + _seed_epc( + session, + property_id=predicted_only, + source="predicted", + property_type="Bungalow", + ) + + # act + resolved = resolve_filtered_property_ids( + session, + portfolio_id=814, + filters=PropertyGroupFilters(property_types=["Bungalow"]), + ) + + # assert — 'both' resolves House (lodged wins); only the prediction-backed + # property is a Bungalow + assert [p.property_id for p in resolved] == [predicted_only] + + def test_postcode_filter_matches_exactly(db_engine: Engine) -> None: # arrange with Session(db_engine) as session: