From 513977a6fd6020c208db0048fca048396b20ed8b Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 7 Jul 2026 11:43:51 +0000 Subject: [PATCH] =?UTF-8?q?Filters=20combine=20with=20AND=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Behavior emerged from filter composition — pinned straight to green. Co-Authored-By: Claude Fable 5 --- .../app/modelling/test_property_filters.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/backend/app/modelling/test_property_filters.py b/tests/backend/app/modelling/test_property_filters.py index 7f4a0f255..b7d029368 100644 --- a/tests/backend/app/modelling/test_property_filters.py +++ b/tests/backend/app/modelling/test_property_filters.py @@ -287,6 +287,30 @@ def test_built_form_filter_resolves_with_the_same_precedence( assert [p.property_id for p in resolved] == [overridden, mid_terrace] +def test_filters_combine_with_and(db_engine: Engine) -> None: + # arrange — right postcode + right type, right postcode + wrong type, + # wrong postcode + right type + with Session(db_engine) as session: + match = _seed_property(session, portfolio_id=814, postcode="B93 8SU") + _seed_epc(session, property_id=match, property_type="House") + wrong_type = _seed_property(session, portfolio_id=814, postcode="B93 8SU") + _seed_epc(session, property_id=wrong_type, property_type="Flat") + wrong_postcode = _seed_property(session, portfolio_id=814, postcode="M20 4TF") + _seed_epc(session, property_id=wrong_postcode, property_type="House") + + # act + resolved = resolve_filtered_property_ids( + session, + portfolio_id=814, + filters=PropertyGroupFilters( + postcodes=["B93 8SU"], property_types=["House"] + ), + ) + + # assert + assert [p.property_id for p in resolved] == [match] + + def test_postcode_filter_matches_exactly(db_engine: Engine) -> None: # arrange with Session(db_engine) as session: