mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
fixed unit tests
This commit is contained in:
parent
ff44212f98
commit
10db0498f5
7 changed files with 28 additions and 24 deletions
2
.idea/Model.iml
generated
2
.idea/Model.iml
generated
|
|
@ -7,7 +7,7 @@
|
||||||
<sourceFolder url="file://$MODULE_DIR$/open_uprn" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/open_uprn" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/recommendations" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/recommendations" isTestSource="false" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Fastapi-backend" jdkType="Python SDK" />
|
<orderEntry type="jdk" jdkName="Engine" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PyNamespacePackagesService">
|
<component name="PyNamespacePackagesService">
|
||||||
|
|
|
||||||
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
|
@ -3,7 +3,7 @@
|
||||||
<component name="Black">
|
<component name="Black">
|
||||||
<option name="sdkName" value="Python 3.10 (backend)" />
|
<option name="sdkName" value="Python 3.10 (backend)" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Fastapi-backend" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Engine" project-jdk-type="Python SDK" />
|
||||||
<component name="PyCharmProfessionalAdvertiser">
|
<component name="PyCharmProfessionalAdvertiser">
|
||||||
<option name="shown" value="true" />
|
<option name="shown" value="true" />
|
||||||
</component>
|
</component>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from pydantic import BaseModel, Field, BeforeValidator, field_validator
|
from pydantic import BaseModel, Field, BeforeValidator
|
||||||
from typing import Annotated, List, Optional
|
from typing import Annotated, List, Optional
|
||||||
|
|
||||||
# Example constants for validation
|
# Example constants for validation
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
pydantic==1.10.11
|
pydantic==2.9.2
|
||||||
|
pydantic-settings==2.6.0
|
||||||
epc-api-python==1.0.2
|
epc-api-python==1.0.2
|
||||||
pandas==2.0.3
|
numpy==2.1.2
|
||||||
numpy==1.25.1
|
pandas==2.2.3
|
||||||
pytz==2023.3
|
pytz==2024.2
|
||||||
tzdata==2023.3
|
tzdata==2023.3
|
||||||
tqdm
|
tqdm
|
||||||
mypy
|
mypy
|
||||||
|
|
@ -20,4 +21,6 @@ pyspellchecker
|
||||||
textblob
|
textblob
|
||||||
boto3
|
boto3
|
||||||
pyarrow
|
pyarrow
|
||||||
msgpack==1.0.5
|
msgpack==1.1.0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -946,9 +946,10 @@ testing_examples = [
|
||||||
},
|
},
|
||||||
"heating_measure_types": [
|
"heating_measure_types": [
|
||||||
'high_heat_retention_storage_heater',
|
'high_heat_retention_storage_heater',
|
||||||
|
'air_source_heat_pump',
|
||||||
],
|
],
|
||||||
"heating_controls_measure_types": [],
|
"heating_controls_measure_types": [],
|
||||||
"notes": "This is an end-terrace house, without mains gas connection, so all we recommend is HHR"
|
"notes": "This is an end-terrace house, without mains gas connection, so we recommend is HHR & ASHP"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"epc": {
|
"epc": {
|
||||||
|
|
|
||||||
|
|
@ -57,10 +57,10 @@ class TestRoofRecommendations:
|
||||||
|
|
||||||
assert len(roof_recommender2.recommendations) == 1
|
assert len(roof_recommender2.recommendations) == 1
|
||||||
|
|
||||||
assert roof_recommender2.recommendations[0]["total"] == 1610.0000000000002
|
assert roof_recommender2.recommendations[0]["total"] == 1653
|
||||||
assert roof_recommender2.recommendations[0]["new_u_value"] == 0.14
|
assert roof_recommender2.recommendations[0]["new_u_value"] == 0.13
|
||||||
assert roof_recommender2.recommendations[0]["starting_u_value"] == 0.68
|
assert roof_recommender2.recommendations[0]["starting_u_value"] == 0.68
|
||||||
assert roof_recommender2.recommendations[0]["parts"][0]["depth"] == 270
|
assert roof_recommender2.recommendations[0]["parts"][0]["depth"] == 300
|
||||||
|
|
||||||
epc_record = EPCRecord()
|
epc_record = EPCRecord()
|
||||||
epc_record.prepared_epc = {"county": "Greater London Authority", "roof-energy-eff": "Very Poor"}
|
epc_record.prepared_epc = {"county": "Greater London Authority", "roof-energy-eff": "Very Poor"}
|
||||||
|
|
@ -85,7 +85,7 @@ class TestRoofRecommendations:
|
||||||
|
|
||||||
assert roof_recommender3.recommendations
|
assert roof_recommender3.recommendations
|
||||||
assert len(roof_recommender3.recommendations) == 1
|
assert len(roof_recommender3.recommendations) == 1
|
||||||
assert roof_recommender3.recommendations[0]["parts"][0]["depth"] == 270
|
assert roof_recommender3.recommendations[0]["parts"][0]["depth"] == 300.0
|
||||||
|
|
||||||
def test_loft_insulation_recommendation_150mm_insulation(self):
|
def test_loft_insulation_recommendation_150mm_insulation(self):
|
||||||
epc_record = EPCRecord()
|
epc_record = EPCRecord()
|
||||||
|
|
@ -107,14 +107,14 @@ class TestRoofRecommendations:
|
||||||
|
|
||||||
assert not roof_recommender4.recommendations
|
assert not roof_recommender4.recommendations
|
||||||
|
|
||||||
roof_recommender4.recommend(phase=0)
|
roof_recommender4.recommend(phase=0, default_u_values=True)
|
||||||
|
|
||||||
assert len(roof_recommender4.recommendations) == 1
|
assert len(roof_recommender4.recommendations) == 1
|
||||||
|
|
||||||
assert roof_recommender4.recommendations[0]["total"] == 1552.5
|
assert roof_recommender4.recommendations[0]["total"] == 1653.0
|
||||||
assert roof_recommender4.recommendations[0]["new_u_value"] == 0.13
|
assert roof_recommender4.recommendations[0]["new_u_value"] == 0.14
|
||||||
assert roof_recommender4.recommendations[0]["starting_u_value"] == 0.3
|
assert roof_recommender4.recommendations[0]["starting_u_value"] == 0.3
|
||||||
assert roof_recommender4.recommendations[0]["parts"][0]["depth"] == 200
|
assert roof_recommender4.recommendations[0]["parts"][0]["depth"] == 300
|
||||||
|
|
||||||
epc_record = EPCRecord()
|
epc_record = EPCRecord()
|
||||||
epc_record.prepared_epc = {"county": "Somerset", "roof-energy-eff": "Good"}
|
epc_record.prepared_epc = {"county": "Somerset", "roof-energy-eff": "Good"}
|
||||||
|
|
@ -139,7 +139,7 @@ class TestRoofRecommendations:
|
||||||
|
|
||||||
assert roof_recommender5.recommendations
|
assert roof_recommender5.recommendations
|
||||||
assert len(roof_recommender5.recommendations) == 1
|
assert len(roof_recommender5.recommendations) == 1
|
||||||
assert roof_recommender5.recommendations[0]["parts"][0]["depth"] == 200
|
assert roof_recommender5.recommendations[0]["parts"][0]["depth"] == 300
|
||||||
|
|
||||||
def test_loft_insulation_recommendation_270mm_insulation(self):
|
def test_loft_insulation_recommendation_270mm_insulation(self):
|
||||||
# We shouldn't recommend anything in this case
|
# We shouldn't recommend anything in this case
|
||||||
|
|
|
||||||
|
|
@ -48,13 +48,13 @@ class TestWindowRecommendations:
|
||||||
'starting_u_value': None, 'new_u_value': None, 'sap_points': None, 'already_installed': False,
|
'starting_u_value': None, 'new_u_value': None, 'sap_points': None, 'already_installed': False,
|
||||||
'total': 7980.0, 'labour_hours': 0.0, 'labour_days': 0.0, 'is_secondary_glazing': False,
|
'total': 7980.0, 'labour_hours': 0.0, 'labour_days': 0.0, 'is_secondary_glazing': False,
|
||||||
'description_simulation': {
|
'description_simulation': {
|
||||||
'multi-glaze-proportion': 100, 'windows-energy-eff': 'Average',
|
'multi-glaze-proportion': 100, 'windows-energy-eff': 'Good',
|
||||||
'windows-description': 'Fully double glazed',
|
'windows-description': 'Fully double glazed',
|
||||||
'glazed-type': 'double glazing installed during or after 2002'
|
'glazed-type': 'double glazing installed during or after 2002'
|
||||||
},
|
},
|
||||||
'simulation_config': {
|
'simulation_config': {
|
||||||
'has_glazing_ending': True, 'glazing_type_ending': 'double',
|
'has_glazing_ending': True, 'glazing_type_ending': 'double',
|
||||||
'multi_glaze_proportion_ending': 100, 'windows_energy_eff_ending': 'Average',
|
'multi_glaze_proportion_ending': 100, 'windows_energy_eff_ending': 'Good',
|
||||||
'glazed_type_ending': 'double glazing installed during or after 2002'
|
'glazed_type_ending': 'double glazing installed during or after 2002'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -401,14 +401,14 @@ class TestWindowRecommendations:
|
||||||
'sap_points': None, 'already_installed': False, 'total': 7980.0, 'labour_hours': 0.0,
|
'sap_points': None, 'already_installed': False, 'total': 7980.0, 'labour_hours': 0.0,
|
||||||
'labour_days': 0.0, 'is_secondary_glazing': False,
|
'labour_days': 0.0, 'is_secondary_glazing': False,
|
||||||
'description_simulation': {
|
'description_simulation': {
|
||||||
'multi-glaze-proportion': 100, 'windows-energy-eff': 'Average',
|
'multi-glaze-proportion': 100, 'windows-energy-eff': 'Good',
|
||||||
'windows-description': 'Fully double glazed',
|
'windows-description': 'Fully double glazed',
|
||||||
'glazed-type': 'double glazing installed during or after 2002'
|
'glazed-type': 'double glazing installed during or after 2002'
|
||||||
},
|
},
|
||||||
'simulation_config': {
|
'simulation_config': {
|
||||||
'has_glazing_ending': True, 'glazing_coverage_ending': 'full',
|
'has_glazing_ending': True, 'glazing_coverage_ending': 'full',
|
||||||
'glazing_type_ending': 'double', 'multi_glaze_proportion_ending': 100,
|
'glazing_type_ending': 'double', 'multi_glaze_proportion_ending': 100,
|
||||||
'windows_energy_eff_ending': 'Average',
|
'windows_energy_eff_ending': 'Good',
|
||||||
'glazed_type_ending': 'double glazing installed during or after 2002'
|
'glazed_type_ending': 'double glazing installed during or after 2002'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -624,7 +624,7 @@ class TestWindowRecommendations:
|
||||||
'total_floor_area_ending': 61.0, 'floor_height_starting': 2.37, 'floor_height_ending': 2.37,
|
'total_floor_area_ending': 61.0, 'floor_height_starting': 2.37, 'floor_height_ending': 2.37,
|
||||||
'hot_water_energy_eff_starting': 'Good', 'hot_water_energy_eff_ending': 'Good',
|
'hot_water_energy_eff_starting': 'Good', 'hot_water_energy_eff_ending': 'Good',
|
||||||
'floor_energy_eff_starting': 'NO_RATING', 'floor_energy_eff_ending': 'NO_RATING',
|
'floor_energy_eff_starting': 'NO_RATING', 'floor_energy_eff_ending': 'NO_RATING',
|
||||||
'windows_energy_eff_starting': 'Very Poor', 'windows_energy_eff_ending': 'Average',
|
'windows_energy_eff_starting': 'Very Poor', 'windows_energy_eff_ending': 'Good',
|
||||||
'walls_energy_eff_starting': 'Very Poor', 'walls_energy_eff_ending': 'Very Poor',
|
'walls_energy_eff_starting': 'Very Poor', 'walls_energy_eff_ending': 'Very Poor',
|
||||||
'sheating_energy_eff_starting': 'NO_RATING', 'sheating_energy_eff_ending': 'NO_RATING',
|
'sheating_energy_eff_starting': 'NO_RATING', 'sheating_energy_eff_ending': 'NO_RATING',
|
||||||
'roof_energy_eff_starting': 'Very Poor', 'roof_energy_eff_ending': 'Very Poor',
|
'roof_energy_eff_starting': 'Very Poor', 'roof_energy_eff_ending': 'Very Poor',
|
||||||
|
|
@ -666,7 +666,7 @@ class TestWindowRecommendations:
|
||||||
{'variable': 'glazed_type_ending', 'starting': 'not defined',
|
{'variable': 'glazed_type_ending', 'starting': 'not defined',
|
||||||
'simulated': 'double glazing installed during or after 2002'},
|
'simulated': 'double glazing installed during or after 2002'},
|
||||||
{'variable': 'multi_glaze_proportion_ending', 'starting': 0.0, 'simulated': 100},
|
{'variable': 'multi_glaze_proportion_ending', 'starting': 0.0, 'simulated': 100},
|
||||||
{'variable': 'windows_energy_eff_ending', 'starting': 'Very Poor', 'simulated': 'Average'},
|
{'variable': 'windows_energy_eff_ending', 'starting': 'Very Poor', 'simulated': 'Good'},
|
||||||
]
|
]
|
||||||
|
|
||||||
assert different == expected_different
|
assert different == expected_different
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue