diff --git a/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_after.pdf b/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_after.pdf new file mode 100644 index 00000000..3bdeda52 Binary files /dev/null and b/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_after.pdf differ diff --git a/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_before.pdf b/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_before.pdf new file mode 100644 index 00000000..c472af0c Binary files /dev/null and b/tests/domain/modelling/fixtures/low_energy_lighting_some_leds_001431_before.pdf differ diff --git a/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_after.pdf b/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_after.pdf new file mode 100644 index 00000000..3bdeda52 Binary files /dev/null and b/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_after.pdf differ diff --git a/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_before.pdf b/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_before.pdf new file mode 100644 index 00000000..248b52ef Binary files /dev/null and b/tests/domain/modelling/fixtures/low_energy_lighting_zero_leds_001431_before.pdf differ diff --git a/tests/domain/modelling/test_elmhurst_cascade_pins.py b/tests/domain/modelling/test_elmhurst_cascade_pins.py index fdf78eda..6bba36ef 100644 --- a/tests/domain/modelling/test_elmhurst_cascade_pins.py +++ b/tests/domain/modelling/test_elmhurst_cascade_pins.py @@ -37,6 +37,7 @@ from domain.modelling.generators.solid_wall_recommendation import ( recommend_solid_wall, ) from domain.modelling.generators.glazing_recommendation import recommend_glazing +from domain.modelling.generators.lighting_recommendation import recommend_lighting from domain.modelling.scoring.overlay_applicator import apply_simulations from domain.modelling.recommendation import MeasureOption from domain.sap10_calculator.calculator import Sap10Calculator, SapResult @@ -537,3 +538,41 @@ def test_secondary_glazing_overlay_reproduces_the_relodged_after() -> None: _assert_overlay_reproduces_after( before, after, recommendation.options[0].overlay ) + + +def test_lighting_overlay_reproduces_the_relodged_after_zero_existing_leds() -> None: + # Arrange — a dwelling with no LEDs (20 incandescent); the after re-lodges + # all 20 as LED. Lighting only changes bulb counts → Appendix L (232), with + # no fabric coupling, so the full-SAP pin closes cleanly. + before: EpcPropertyData = parse_recommendation_summary( + "low_energy_lighting_zero_leds_001431_before.pdf" + ) + after: EpcPropertyData = parse_recommendation_summary( + "low_energy_lighting_zero_leds_001431_after.pdf" + ) + recommendation: Recommendation | None = recommend_lighting(before, _AnyProduct()) + assert recommendation is not None + + # Act / Assert + _assert_overlay_reproduces_after( + before, after, recommendation.options[0].overlay + ) + + +def test_lighting_overlay_reproduces_the_relodged_after_some_existing_leds() -> None: + # Arrange — a dwelling with some LEDs already (5 LED + 15 incandescent); the + # after re-lodges all 20 as LED. Exercises the partial-upgrade path: the + # overlay tops led up to the total rather than starting from zero. + before: EpcPropertyData = parse_recommendation_summary( + "low_energy_lighting_some_leds_001431_before.pdf" + ) + after: EpcPropertyData = parse_recommendation_summary( + "low_energy_lighting_some_leds_001431_after.pdf" + ) + recommendation: Recommendation | None = recommend_lighting(before, _AnyProduct()) + assert recommendation is not None + + # Act / Assert + _assert_overlay_reproduces_after( + before, after, recommendation.options[0].overlay + )