diff --git a/tests/repositories/property/test_landlord_override_overlays.py b/tests/repositories/property/test_landlord_override_overlays.py index 99d0d3b82..385d2f355 100644 --- a/tests/repositories/property/test_landlord_override_overlays.py +++ b/tests/repositories/property/test_landlord_override_overlays.py @@ -6,9 +6,16 @@ that fold onto the lodged EPC — per component, partial, skipping unmapped rows from __future__ import annotations +import logging + +import pytest + from datatypes.epc.domain.epc_property_data import BuildingPartIdentifier from domain.modelling.scoring.overlay_applicator import apply_simulations -from repositories.property.landlord_override_overlays import overlays_from +from repositories.property.landlord_override_overlays import ( + flag_fuel_mismatch, + overlays_from, +) from repositories.property.property_overrides_reader import ( ResolvedPropertyOverride, ResolvedPropertyOverrides, @@ -171,3 +178,26 @@ def test_main_fuel_override_wins_over_a_heating_archetype_natural_fuel() -> None # Assert — the explicit fuel (smokeless coal 15) wins over the coal default. assert result.sap_heating.main_heating_details[0].main_fuel_type == 15 + + +def test_a_fuel_override_contradicting_the_heating_archetype_is_logged( + caplog: pytest.LogCaptureFixture, +) -> None: + # An electric room heater is unambiguously electricity; a "mains gas" main_fuel + # override contradicts it (a different fuel family). The override still wins + # (ADR-0041), but the implausibility is logged for later review — not raised. + overrides = ResolvedPropertyOverrides( + rows=( + ResolvedPropertyOverride( + "main_heating_system", 0, "Electric room heaters" + ), + ResolvedPropertyOverride("main_fuel", 0, "mains gas"), + ) + ) + + # Act + with caplog.at_level(logging.WARNING): + flag_fuel_mismatch(overrides) + + # Assert + assert any("fuel" in r.message.lower() for r in caplog.records)