diff --git a/tests/repositories/property/test_landlord_override_overlays.py b/tests/repositories/property/test_landlord_override_overlays.py index c3f30fc3d..e6e60b4e3 100644 --- a/tests/repositories/property/test_landlord_override_overlays.py +++ b/tests/repositories/property/test_landlord_override_overlays.py @@ -72,6 +72,46 @@ def test_resolve_boiler_archetype_leaves_other_cases_unchanged( assert resolved == heating_value +def test_gas_boiler_override_on_oil_fuel_builds_the_oil_boiler_overlay() -> None: + # ADR-0067: a fuel-agnostic gas-boiler override sitting on an oil `main_fuel` + # must resolve to the oil boiler at overlay time (the join reads the sibling + # fuel row), so it scores the oil boiler code (127), not the gas default (102). + + # Arrange + overrides = ResolvedPropertyOverrides( + rows=( + ResolvedPropertyOverride("main_heating_system", 0, "Gas boiler, regular"), + ResolvedPropertyOverride("main_fuel", 0, "oil"), + ) + ) + + # Act + overlays = overlays_from(overrides) + + # Assert — the heating overlay carries the oil boiler code. + heating = next(o.heating for o in overlays if o.heating is not None) + assert heating.sap_main_heating_code == 127 + + +def test_gas_boiler_override_on_gas_fuel_stays_a_gas_boiler() -> None: + # The join only fires for non-gas fuels; a genuine gas boiler is untouched. + + # Arrange + overrides = ResolvedPropertyOverrides( + rows=( + ResolvedPropertyOverride("main_heating_system", 0, "Gas boiler, regular"), + ResolvedPropertyOverride("main_fuel", 0, "mains gas"), + ) + ) + + # Act + overlays = overlays_from(overrides) + + # Assert — the gas regular condensing code (102). + heating = next(o.heating for o in overlays if o.heating is not None) + assert heating.sap_main_heating_code == 102 + + def test_roof_type_row_produces_a_roof_overlay() -> None: # Arrange overrides = ResolvedPropertyOverrides(