Model/backend/tests/test_data/heating_scenarios.py
2025-08-06 20:04:38 +01:00

104 lines
4.3 KiB
Python

from backend.Funding import EligibilityCaveats
heating_scenarios = [
{
"description": "EPC D with ASHP and no insulation at all — fails precondition 1",
"measures": [{"type": "air_source_heat_pump"}],
"starting_sap": 60,
"mainheat_description": "air source heat pump",
"heating_control_description": "roomstat_programmer_trvs",
"has_wall_insulation_recommendation": True,
"has_roof_insulation_recommendation": False,
"expected_eligibility": False,
"expected_caveats": [EligibilityCaveats.MINIMUM_INSULATION_PRECONDITIONS_NOT_MET],
},
{
"description": "EPC D with ASHP and no insulation at all — fails precondition 1",
"measures": [{"type": "air_source_heat_pump"}],
"starting_sap": 60,
"mainheat_description": "air source heat pump",
"heating_control_description": "roomstat_programmer_trvs",
"has_wall_insulation_recommendation": False,
"has_roof_insulation_recommendation": False,
"expected_eligibility": False,
"expected_caveats": [EligibilityCaveats.MINIMUM_INSULATION_PRECONDITIONS_NOT_MET],
},
{
"description": "EPC D with ASHP and floor insulation — passes precondition 1",
"measures": [
{"type": "air_source_heat_pump"},
{"type": "suspended_floor_insulation"}
],
"starting_sap": 60,
"has_wall_insulation_recommendation": False,
"has_roof_insulation_recommendation": False,
"mainheat_description": "air source heat pump",
"heating_control_description": "roomstat_programmer_trvs",
"expected_eligibility": True,
"expected_caveats": [],
},
{
"description": "EPC E with ASHP and only floor insulation — fails precondition 2 due to missing wall/roof",
"measures": [
{"type": "air_source_heat_pump"},
{"type": "suspended_floor_insulation"}
],
"starting_sap": 45,
"mainheat_description": "air source heat pump",
"heating_control_description": "roomstat_programmer_trvs",
"has_wall_insulation_recommendation": True,
"has_roof_insulation_recommendation": True,
"expected_eligibility": False,
"expected_caveats": [EligibilityCaveats.MINIMUM_INSULATION_PRECONDITIONS_NOT_MET],
},
{
"description": "EPC E with ASHP and both wall and roof insulation — passes precondition 2",
"measures": [
{"type": "air_source_heat_pump"},
{"type": "external_wall_insulation"},
{"type": "loft_insulation"}
],
"starting_sap": 45,
"mainheat_description": "air source heat pump",
"heating_control_description": "roomstat_programmer_trvs",
"has_wall_insulation_recommendation": True,
"has_roof_insulation_recommendation": True,
"expected_eligibility": True,
"expected_caveats": [],
},
{
"description": "EPC D with FTCH and no insulation — still passes (exempt from precondition 1)",
"measures": [{"type": "first_time_central_heating"}],
"starting_sap": 60,
"mainheat_description": "none",
"heating_control_description": "none",
"expected_eligibility": True,
"expected_caveats": [],
},
{
"description": "EPC E with FTCH and no insulation — fails precondition 2",
"measures": [{"type": "first_time_central_heating"}],
"starting_sap": 45,
"mainheat_description": "none",
"heating_control_description": "none",
"has_wall_insulation_recommendation": True,
"has_roof_insulation_recommendation": True,
"expected_eligibility": False,
"expected_caveats": [EligibilityCaveats.MINIMUM_INSULATION_PRECONDITIONS_NOT_MET],
},
{
"description": "EPC E with FTCH and wall/roof insulation — passes precondition 2",
"measures": [
{"type": "first_time_central_heating"},
{"type": "external_wall_insulation"},
{"type": "loft_insulation"},
],
"starting_sap": 45,
"mainheat_description": "none",
"heating_control_description": "none",
"has_wall_insulation_recommendation": True,
"has_roof_insulation_recommendation": True,
"expected_eligibility": True,
"expected_caveats": [],
},
]