mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
added initial test
This commit is contained in:
parent
ac749e427e
commit
b81b04a6b8
3 changed files with 56 additions and 6 deletions
|
|
@ -410,7 +410,12 @@ class RoofRecommendations:
|
|||
# ~~~~~ Sloping Ceiling Insulation Recommendation Logic ~~~~~
|
||||
####################################################################################################
|
||||
if needs_sloping_ceiling:
|
||||
self.recommend_sloping_ceiling()
|
||||
self.recommend_sloping_ceiling(
|
||||
phase=phase,
|
||||
u_value=u_value,
|
||||
non_invasive_recommendations=non_invasive_recommendations
|
||||
)
|
||||
return
|
||||
|
||||
raise NotImplementedError("Implement me")
|
||||
|
||||
|
|
@ -453,7 +458,6 @@ class RoofRecommendations:
|
|||
could be traditional roofing materials like bitumen-based felt, rubber membranes like EPDM, or fiberglass.
|
||||
|
||||
:param u_value: U-value of the roof before any retrofit measures have been installed
|
||||
:param insulation_thickness: Existing Insulation thickness of the loft
|
||||
:param phase: Phase of the recommendation
|
||||
:param is_pitched: Is the roof pitched
|
||||
:param is_flat: Is the roof flat
|
||||
|
|
@ -799,7 +803,7 @@ class RoofRecommendations:
|
|||
)
|
||||
|
||||
new_description = "Pitched, insulated"
|
||||
new_efficiency = "Good"
|
||||
new_efficiency = "Average" # 75mm insulation only results in average performance category
|
||||
|
||||
roof_ending_config = RoofAttributes(new_description).process()
|
||||
roof_simulation_config = check_simulation_difference(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import pytest
|
||||
from unittest.mock import Mock
|
||||
from backend.Property import Property
|
||||
from etl.epc.Record import EPCRecord
|
||||
from recommendations.RoofRecommendations import RoofRecommendations
|
||||
|
|
@ -430,7 +431,7 @@ class TestRoofRecommendations:
|
|||
)
|
||||
]
|
||||
)
|
||||
def test_sloping_ceiling_valid(
|
||||
def test_is_sloping_ceiling_appropriate(
|
||||
self, roof, has_sloping_ceiling_recommendation, primary_roof_is_sloped, expected_result
|
||||
):
|
||||
assert RoofRecommendations.is_sloping_ceiling_appropriate(
|
||||
|
|
@ -440,3 +441,50 @@ class TestRoofRecommendations:
|
|||
has_sloping_ceiling_recommendation=has_sloping_ceiling_recommendation,
|
||||
primary_roof_is_sloped=primary_roof_is_sloped
|
||||
) == expected_result
|
||||
|
||||
def test_sloping_ceiling_pitched_no_insulation(self):
|
||||
property_instance = Mock(
|
||||
id=0,
|
||||
roof={
|
||||
'original_description': 'Pitched, no insulation', 'clean_description': 'Pitched, no insulation',
|
||||
'thermal_transmittance': None, 'thermal_transmittance_unit': None, 'is_pitched': True,
|
||||
'is_roof_room': False, 'is_loft': False, 'is_flat': False, 'is_thatched': False,
|
||||
'is_at_rafters': False, 'is_assumed': False, 'has_dwelling_above': False, 'is_valid': True,
|
||||
'insulation_thickness': 'none'
|
||||
},
|
||||
roof_area=64.085,
|
||||
data={"county": None, "local-authority-label": "Manchester"}
|
||||
)
|
||||
property_instance.age_band = "D"
|
||||
property_instance.already_installed = []
|
||||
property_instance.non_invasive_recommendations = [
|
||||
{'type': 'flat_roof_insulation', 'sap_points': 9, 'survey': True},
|
||||
{'type': 'sloping_ceiling_insulation', 'sap_points': 9, 'survey': True},
|
||||
{'type': 'cavity_wall_insulation', 'sap_points': 6, 'survey': True},
|
||||
{'type': 'suspended_floor_insulation', 'sap_points': 2, 'survey': True},
|
||||
{'type': 'roomstat_programmer_trvs', 'sap_points': 3, 'survey': True},
|
||||
{'type': 'time_temperature_zone_control', 'sap_points': 3, 'survey': True},
|
||||
{'type': 'solar_pv', 'sap_points': 5, 'survey': True, 'suitable': True}
|
||||
]
|
||||
|
||||
roof_recommender = RoofRecommendations(property_instance=property_instance, materials=[])
|
||||
assert not roof_recommender.recommendations
|
||||
|
||||
roof_recommender.recommend(phase=0)
|
||||
assert len(roof_recommender.recommendations) == 1
|
||||
|
||||
assert roof_recommender.recommendations[0]["type"] == "sloping_ceiling_insulation"
|
||||
assert roof_recommender.recommendations[0]["measure_type"] == "sloping_ceiling_insulation"
|
||||
assert (
|
||||
roof_recommender.recommendations[0]["description"] ==
|
||||
"Insulate sloping ceilings at the rafters and re-decorate"
|
||||
)
|
||||
assert roof_recommender.recommendations[0]["simulation_config"] == {
|
||||
'roof_insulation_thickness_ending': 'average',
|
||||
'roof_thermal_transmittance_ending': 0.5,
|
||||
'roof_energy_eff_ending': 'Average'
|
||||
}
|
||||
|
||||
assert roof_recommender.recommendations[0]["description_simulation"] == {
|
||||
'roof-description': 'Pitched, insulated', 'roof-energy-eff': 'Good'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
import os
|
||||
import pytest
|
||||
import pickle
|
||||
import numpy as np
|
||||
from unittest.mock import Mock, MagicMock
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue