From 13f1981776a3d07a6c9fd98bd1661fd6158d0ad3 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Mon, 29 Jun 2026 16:15:48 +0000 Subject: [PATCH] =?UTF-8?q?Assume=20a=20dual=20Economy-7=20meter=20for=20a?= =?UTF-8?q?ll-electric=20room-heater=20dwellings=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../domain/epc/test_main_heating_system_overlay.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/domain/epc/test_main_heating_system_overlay.py b/tests/domain/epc/test_main_heating_system_overlay.py index af31e810..c85f1f38 100644 --- a/tests/domain/epc/test_main_heating_system_overlay.py +++ b/tests/domain/epc/test_main_heating_system_overlay.py @@ -46,6 +46,19 @@ def test_electric_room_heaters_overlay_the_direct_acting_room_heater_code() -> N assert simulation.heating.sap_main_heating_code == 691 +def test_electric_room_heaters_assume_a_dual_economy7_meter() -> None: + # A dwelling on electric room heaters is all-electric and realistically + # billed on Economy 7 (its immersion hot water charges overnight; §12 Rule 3 + # gives the room heaters a 10-hour off-peak window). When the landlord names + # only the system, the coherent meter to assume is Dual — the §12 dispatch + # then applies the realistic high/low split, not a single-rate over-penalty. + simulation = main_heating_overlay_for("Electric room heaters", 0) + + assert simulation is not None + assert simulation.heating is not None + assert simulation.heating.meter_type == "Dual" + + @pytest.mark.parametrize( ("main_heating_value", "code"), [