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: