mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-12 13:29:04 +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 ~~~~~
|
# ~~~~~ Sloping Ceiling Insulation Recommendation Logic ~~~~~
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
if needs_sloping_ceiling:
|
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")
|
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.
|
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 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 phase: Phase of the recommendation
|
||||||
:param is_pitched: Is the roof pitched
|
:param is_pitched: Is the roof pitched
|
||||||
:param is_flat: Is the roof flat
|
:param is_flat: Is the roof flat
|
||||||
|
|
@ -799,7 +803,7 @@ class RoofRecommendations:
|
||||||
)
|
)
|
||||||
|
|
||||||
new_description = "Pitched, insulated"
|
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_ending_config = RoofAttributes(new_description).process()
|
||||||
roof_simulation_config = check_simulation_difference(
|
roof_simulation_config = check_simulation_difference(
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
from unittest.mock import Mock
|
||||||
from backend.Property import Property
|
from backend.Property import Property
|
||||||
from etl.epc.Record import EPCRecord
|
from etl.epc.Record import EPCRecord
|
||||||
from recommendations.RoofRecommendations import RoofRecommendations
|
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
|
self, roof, has_sloping_ceiling_recommendation, primary_roof_is_sloped, expected_result
|
||||||
):
|
):
|
||||||
assert RoofRecommendations.is_sloping_ceiling_appropriate(
|
assert RoofRecommendations.is_sloping_ceiling_appropriate(
|
||||||
|
|
@ -440,3 +441,50 @@ class TestRoofRecommendations:
|
||||||
has_sloping_ceiling_recommendation=has_sloping_ceiling_recommendation,
|
has_sloping_ceiling_recommendation=has_sloping_ceiling_recommendation,
|
||||||
primary_roof_is_sloped=primary_roof_is_sloped
|
primary_roof_is_sloped=primary_roof_is_sloped
|
||||||
) == expected_result
|
) == 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 pytest
|
||||||
import pickle
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from unittest.mock import Mock, MagicMock
|
from unittest.mock import Mock, MagicMock
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue