mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
107 lines
4.2 KiB
Python
107 lines
4.2 KiB
Python
from backend.Property import Property
|
|
from recommendations.VentilationRecommendations import VentilationRecommendations
|
|
from recommendations.tests.test_data.materials import materials
|
|
from etl.epc.Record import EPCRecord
|
|
|
|
|
|
class TestVentilationRecommendations:
|
|
|
|
def test_natural_ventilation(self):
|
|
epc_record = EPCRecord()
|
|
epc_record.prepared_epc = {"mechanical-ventilation": "natural"}
|
|
input_property1 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record)
|
|
|
|
recommender = VentilationRecommendations(
|
|
property_instance=input_property1,
|
|
materials=materials
|
|
)
|
|
|
|
assert not recommender.recommendation
|
|
|
|
recommender.recommend(phase=None)
|
|
|
|
assert len(recommender.recommendation) == 1
|
|
|
|
assert recommender.recommendation[0]["total"] == 1071.0
|
|
assert recommender.recommendation[0]["type"] == "mechanical_ventilation"
|
|
assert len(recommender.recommendation[0]["parts"]) == 1
|
|
assert recommender.recommendation[0]["parts"][0]["description"] == 'Mechanical Extract Ventilation'
|
|
assert recommender.recommendation[0]["parts"][0]["quantity"] == 2
|
|
|
|
def test_missing_ventilation(self):
|
|
epc_record = EPCRecord()
|
|
epc_record.prepared_epc = {"mechanical-ventilation": None}
|
|
input_property2 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record)
|
|
|
|
recommender2 = VentilationRecommendations(
|
|
property_instance=input_property2,
|
|
materials=materials
|
|
)
|
|
|
|
assert not recommender2.recommendation
|
|
|
|
recommender2.recommend(phase=None)
|
|
|
|
assert len(recommender2.recommendation) == 1
|
|
|
|
assert recommender2.recommendation[0]["total"] == 1071.0
|
|
assert recommender2.recommendation[0]["type"] == "mechanical_ventilation"
|
|
assert len(recommender2.recommendation[0]["parts"]) == 1
|
|
assert recommender2.recommendation[0]["parts"][0]["description"] == 'Mechanical Extract Ventilation'
|
|
assert recommender2.recommendation[0]["parts"][0]["quantity"] == 2
|
|
|
|
def test_nodata_ventilation(self):
|
|
epc_record = EPCRecord()
|
|
epc_record.prepared_epc = {"mechanical-ventilation": "NO DATA!!"}
|
|
input_property3 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record)
|
|
|
|
recommender3 = VentilationRecommendations(
|
|
property_instance=input_property3,
|
|
materials=materials
|
|
)
|
|
|
|
assert not recommender3.recommendation
|
|
|
|
recommender3.recommend(phase=None)
|
|
|
|
assert len(recommender3.recommendation) == 1
|
|
|
|
assert recommender3.recommendation[0]["total"] == 1071.0
|
|
assert recommender3.recommendation[0]["type"] == "mechanical_ventilation"
|
|
assert len(recommender3.recommendation[0]["parts"]) == 1
|
|
assert recommender3.recommendation[0]["parts"][0]["description"] == 'Mechanical Extract Ventilation'
|
|
assert recommender3.recommendation[0]["parts"][0]["quantity"] == 2
|
|
|
|
def test_existing_ventilation_1(self):
|
|
epc_record = EPCRecord()
|
|
epc_record.prepared_epc = {"mechanical-ventilation": "mechanical, extract only"}
|
|
input_property4 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record)
|
|
|
|
recommender4 = VentilationRecommendations(
|
|
property_instance=input_property4,
|
|
materials=materials
|
|
)
|
|
|
|
assert not recommender4.recommendation
|
|
|
|
recommender4.recommend(phase=None)
|
|
|
|
assert not recommender4.recommendation
|
|
assert recommender4.has_ventilaion
|
|
|
|
def test_existing_ventilation_2(self):
|
|
epc_record = EPCRecord()
|
|
epc_record.prepared_epc = {"mechanical-ventilation": "mechanical, supply and extract"}
|
|
input_property5 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record)
|
|
|
|
recommender5 = VentilationRecommendations(
|
|
property_instance=input_property5,
|
|
materials=materials
|
|
)
|
|
|
|
assert not recommender5.recommendation
|
|
|
|
recommender5.recommend(phase=None)
|
|
|
|
assert not recommender5.recommendation
|
|
assert recommender5.has_ventilaion
|