mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +00:00
NI (insulation present) and measured depths keep a vaulted roof ineligible 🟩
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
1dd2d19f78
commit
b33735ef30
1 changed files with 37 additions and 0 deletions
|
|
@ -130,6 +130,43 @@ def test_vaulted_ceiling_with_nd_thickness_on_limited_insulation_age_band_yields
|
|||
assert recommendation is None
|
||||
|
||||
|
||||
def test_vaulted_ceiling_with_ni_thickness_yields_no_recommendation() -> None:
|
||||
# Arrange — "NI" means insulation PRESENT at unknown thickness (RdSAP 10
|
||||
# §5.11.4: score as 50 mm), never "no insulation" — even on an age band
|
||||
# whose as-built state is uninsulated (ADR-0047, the ND ≠ NI distinction).
|
||||
baseline: EpcPropertyData = build_epc()
|
||||
main: SapBuildingPart = _part(baseline, BuildingPartIdentifier.MAIN)
|
||||
main.roof_construction_type = "Pitched (vaulted ceiling)"
|
||||
main.roof_insulation_thickness = "NI"
|
||||
main.construction_age_band = "B"
|
||||
|
||||
# Act
|
||||
recommendation: Recommendation | None = recommend_roof_insulation(
|
||||
baseline, _StubProducts()
|
||||
)
|
||||
|
||||
# Assert
|
||||
assert recommendation is None
|
||||
|
||||
|
||||
def test_vaulted_ceiling_with_measured_thickness_yields_no_recommendation() -> None:
|
||||
# Arrange — an explicitly-lodged depth means the rafters are already
|
||||
# insulated; the sentinel-aware trigger must not loosen the numeric rule.
|
||||
baseline: EpcPropertyData = build_epc()
|
||||
main: SapBuildingPart = _part(baseline, BuildingPartIdentifier.MAIN)
|
||||
main.roof_construction_type = "Pitched (vaulted ceiling)"
|
||||
main.roof_insulation_thickness = 100
|
||||
main.construction_age_band = "B"
|
||||
|
||||
# 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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue