from backend.Property import Property from unittest.mock import Mock from recommendations.VentilationRecommendations import VentilationRecommendations ventilation_materials = [ { 'id': 17, 'type': 'mechanical_ventilation', 'description': 'Mechanical Extract Ventilation', 'depths': None, 'depth_unit': None, 'cost': 500, 'cost_unit': 'gbp_per_unit', 'r_value_per_mm': None, 'r_value_unit': None, 'thermal_conductivity': None, 'thermal_conductivity_unit': None, 'link': None, 'is_active': True, 'estimated_cost': 1000, 'quantity': 2, 'quantity_unit': None } ] class TestVentilationRecommendations: def test_natural_ventilation(self): input_property1 = Property(id=1, postcode="F4k3 6", address1="623 fake street", epc_client=Mock()) input_property1.data = {"mechanical-ventilation": "natural"} recommender = VentilationRecommendations( property_instance=input_property1, materials=ventilation_materials ) assert not recommender.recommendation recommender.recommend() assert len(recommender.recommendation) == 1 assert recommender.recommendation[0]["cost"] == 1000 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): input_property2 = Property(id=1, postcode="F4k3 6", address1="623 fake street", epc_client=Mock()) input_property2.data = {"mechanical-ventilation": None} recommender2 = VentilationRecommendations( property_instance=input_property2, materials=ventilation_materials ) assert not recommender2.recommendation recommender2.recommend() assert len(recommender2.recommendation) == 1 assert recommender2.recommendation[0]["cost"] == 1000 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): input_property3 = Property(id=1, postcode="F4k3 6", address1="623 fake street", epc_client=Mock()) input_property3.data = {"mechanical-ventilation": "NO DATA!!"} recommender3 = VentilationRecommendations( property_instance=input_property3, materials=ventilation_materials ) assert not recommender3.recommendation recommender3.recommend() assert len(recommender3.recommendation) == 1 assert recommender3.recommendation[0]["cost"] == 1000 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): input_property4 = Property(id=1, postcode="F4k3 6", address1="623 fake street", epc_client=Mock()) input_property4.data = {"mechanical-ventilation": 'mechanical, extract only'} recommender4 = VentilationRecommendations( property_instance=input_property4, materials=ventilation_materials ) assert not recommender4.recommendation recommender4.recommend() assert not recommender4.recommendation assert recommender4.has_ventilaion def test_existing_ventilation_2(self): input_property5 = Property(id=1, postcode="F4k3 6", address1="623 fake street", epc_client=Mock()) input_property5.data = {"mechanical-ventilation": 'mechanical, supply and extract'} recommender5 = VentilationRecommendations( property_instance=input_property5, materials=ventilation_materials ) assert not recommender5.recommendation recommender5.recommend() assert not recommender5.recommendation assert recommender5.has_ventilaion