From 1dd2d19f782e7ab7e13b97fc4c8ad6bfd815dcc4 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Thu, 2 Jul 2026 11:03:01 +0000 Subject: [PATCH] =?UTF-8?q?ND=20on=20a=20limited-insulation=20age=20band?= =?UTF-8?q?=20yields=20no=20roof=20recommendation=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- .../modelling/test_roof_recommendation.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/domain/modelling/test_roof_recommendation.py b/tests/domain/modelling/test_roof_recommendation.py index 9e36b25f8..defc239cd 100644 --- a/tests/domain/modelling/test_roof_recommendation.py +++ b/tests/domain/modelling/test_roof_recommendation.py @@ -111,6 +111,25 @@ def test_vaulted_ceiling_with_nd_thickness_on_pre_1950_dwelling_yields_sloping_c ) +def test_vaulted_ceiling_with_nd_thickness_on_limited_insulation_age_band_yields_no_recommendation() -> None: + # Arrange — same vaulted-ND shape, but age band E: as-built carries limited + # insulation (ADR-0047), and ND must never make an undefined cert MORE + # eligible than an explicit thin lodgement (which is not eligible today). + baseline: EpcPropertyData = build_epc() + main: SapBuildingPart = _part(baseline, BuildingPartIdentifier.MAIN) + main.roof_construction_type = "Pitched (vaulted ceiling)" + main.roof_insulation_thickness = "ND" + main.construction_age_band = "E" + + # Act + recommendation: Recommendation | None = recommend_roof_insulation( + baseline, _StubProducts() + ) + + # Assert + assert recommendation is None + + def test_loft_option_carries_cost_from_roof_area_and_product() -> None: # Arrange baseline: EpcPropertyData = build_epc() # MAIN roof area 14.85 m^2