From 566374bf34dfda2e4a22f71e78f6e65c4092ad1e Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Fri, 3 Jul 2026 11:36:51 +0000 Subject: [PATCH] =?UTF-8?q?Electric=20underfloor=20override=20drags=20the?= =?UTF-8?q?=20conservative=20Group=207=20control=20(2701)=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 --- .../epc/test_main_heating_system_overlay.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tests/domain/epc/test_main_heating_system_overlay.py b/tests/domain/epc/test_main_heating_system_overlay.py index d9f89b4b6..3ae8b07b7 100644 --- a/tests/domain/epc/test_main_heating_system_overlay.py +++ b/tests/domain/epc/test_main_heating_system_overlay.py @@ -259,6 +259,32 @@ def test_electric_underfloor_overlays_the_underfloor_category( assert simulation.heating.main_heating_category == 8 +@pytest.mark.parametrize( + "main_heating_value", + [ + "Electric underfloor, in concrete slab (off-peak)", + "Electric underfloor, integrated storage and direct-acting", + "Electric underfloor, in screed above insulation", + ], +) +def test_electric_underfloor_drags_the_conservative_group_7_control( + main_heating_value: str, +) -> None: + # The landlord names the system, not its control, so the overlay assumes the + # conservative Table 4e Group 7 default: 2701 ("no time or thermostatic + # control", +0.3 C — the largest adjustment in the group, so an unobserved + # control is never over-credited). Mirrors storage-manual 2401 / room-heater + # 2601; also overwrites a stale control inherited from the replaced system + # (711795 kept a community control 2311) — ADR-0050. + # Act + simulation = main_heating_overlay_for(main_heating_value, 0) + + # Assert — SAP Table 4e Group 7 conservative underfloor control. + assert simulation is not None + assert simulation.heating is not None + assert simulation.heating.main_heating_control == 2701 + + def test_screed_underfloor_defers_the_meter_to_the_cert() -> None: # "In screed above insulation (standard or off peak)" is tariff-ambiguous (81% # of the corpus lodge off-peak), so the archetype cannot know the meter — it