mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
56 lines
2.8 KiB
Python
56 lines
2.8 KiB
Python
import pytest
|
|
import datetime
|
|
from backend.Property import Property
|
|
from recommendations.FireplaceRecommendations import FireplaceRecommendations
|
|
from etl.epc.Record import EPCRecord
|
|
|
|
|
|
@pytest.fixture
|
|
def fireplace_materials():
|
|
return [
|
|
{'id': 3591, 'type': 'sealing_fireplace', 'description': 'Sealing of an open fireplace', 'depth': 0.0,
|
|
'depth_unit': None, 'cost': None, 'cost_unit': 'gbp_per_unit', 'r_value_per_mm': None,
|
|
'r_value_unit': 'square_meter_kelvin_per_watt', 'thermal_conductivity': None,
|
|
'thermal_conductivity_unit': None, 'link': 'Warm Front',
|
|
'created_at': datetime.datetime(2025, 8, 15, 16, 31, 52, 995292), 'is_active': True,
|
|
'prime_material_cost': None, 'material_cost': 0.0, 'labour_cost': 0.0, 'labour_hours_per_unit': 0.0,
|
|
'plant_cost': 0.0, 'total_cost': 185.0, 'notes': None, 'is_installer_quote': True, 'innovation_rate': 0.0,
|
|
'size': None, 'size_unit': None, 'includes_scaffolding': False, 'includes_battery': False,
|
|
'battery_size': None}
|
|
]
|
|
|
|
|
|
class TestFirepaceRecommendations:
|
|
|
|
def test_no_fireplaces(self, fireplace_materials):
|
|
epc_record = EPCRecord()
|
|
epc_record.number_open_fireplaces = 0
|
|
property_instance = Property(id=0, address="fake", postcode="fake", epc_record=epc_record)
|
|
recommender = FireplaceRecommendations(property_instance=property_instance, materials=fireplace_materials)
|
|
assert recommender.recommendation is None
|
|
recommender.recommend()
|
|
assert recommender.recommendation is None
|
|
|
|
def test_one_fireplace(self, fireplace_materials):
|
|
epc_record = EPCRecord()
|
|
epc_record.number_open_fireplaces = 1
|
|
property_instance = Property(id=0, address="fake", postcode="fake", epc_record=epc_record)
|
|
property_instance.already_installed = []
|
|
recommender = FireplaceRecommendations(property_instance=property_instance, materials=fireplace_materials)
|
|
assert recommender.recommendation is None
|
|
recommender.recommend()
|
|
assert recommender.recommendation
|
|
assert recommender.recommendation[0]["type"] == "sealing_open_fireplace"
|
|
assert recommender.recommendation[0]["total"] == 185
|
|
|
|
def test_multiple_fireplaces(self, fireplace_materials):
|
|
epc_record = EPCRecord()
|
|
epc_record.number_open_fireplaces = 3
|
|
property_instance = Property(id=0, address="fake", postcode="fake", epc_record=epc_record)
|
|
property_instance.already_installed = []
|
|
recommender = FireplaceRecommendations(property_instance=property_instance, materials=fireplace_materials)
|
|
assert recommender.recommendation is None
|
|
recommender.recommend()
|
|
assert recommender.recommendation
|
|
assert recommender.recommendation[0]["type"] == "sealing_open_fireplace"
|
|
assert recommender.recommendation[0]["total"] == 185 * 3
|