diff --git a/recommendations/tests/test_wall_recommendations.py b/recommendations/tests/test_wall_recommendations.py index bfc681f5..580ebb91 100644 --- a/recommendations/tests/test_wall_recommendations.py +++ b/recommendations/tests/test_wall_recommendations.py @@ -7,6 +7,7 @@ from recommendations.WallRecommendations import WallRecommendations from backend.Property import Property from recommendations.recommendation_utils import is_diminishing_returns from recommendations.tests.test_data.materials import materials +from etl.epc.Record import EPCRecord # with open( @@ -231,7 +232,9 @@ class TestWallRecommendationsBase: class TestCavityWallRecommensations: def test_fill_empty_cavity(self): - input_property = Property(id=1, postcode="F4k3", address="123 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"county": "Derbyshire"} + input_property = Property(id=1, postcode="F4k3", address="123 fake street", epc_record=epc_record) input_property.walls = { 'original_description': 'Cavity wall, as built, no insulation (assumed)', 'clean_description': 'Cavity wall, as built, no insulation', @@ -245,7 +248,6 @@ class TestCavityWallRecommensations: } input_property.age_band = "C" input_property.insulation_wall_area = 50 - input_property.data = {"county": "Derbyshire"} recommender = WallRecommendations( property_instance=input_property, @@ -265,7 +267,9 @@ class TestCavityWallRecommensations: assert np.isclose(recommender.recommendations[1]["total"], 2004.6600000000003) def test_fill_partial_filled_cavity(self): - input_property = Property(id=1, postcode="F4k3", address="123 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"county": "County Durham"} + input_property = Property(id=1, postcode="F4k3", address="123 fake street", epc_record=epc_record) input_property.walls = { 'original_description': 'Cavity wall, as built, partial insulation (assumed)', 'clean_description': 'Cavity wall, as built, partial insulation', @@ -279,7 +283,6 @@ class TestCavityWallRecommensations: } input_property.age_band = "C" input_property.insulation_wall_area = 50 - input_property.data = {"county": "County Durham"} recommender = WallRecommendations( property_instance=input_property, @@ -299,7 +302,9 @@ class TestCavityWallRecommensations: assert np.isclose(recommender.recommendations[1]["total"], 1999.9350000000002) def test_system_built_wall(self): - input_property2 = Property(id=1, postcode="F4k3 2", address="223 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"property-type": "House", "county": "Derbyshire", "built-form": "Detached"} + input_property2 = Property(id=1, postcode="F4k3 2", address="223 fake street", epc_record=epc_record) input_property2.walls = { 'original_description': 'System built, as built, no insulation (assumed)', 'clean_description': 'System built, as built, no insulation', @@ -314,7 +319,6 @@ class TestCavityWallRecommensations: input_property2.age_band = "F" input_property2.insulation_wall_area = 120 input_property2.restricted_measures = False - input_property2.data = {"property-type": "House", "county": "Derbyshire", "built-form": "Detached"} assert input_property2.walls["is_system_built"] @@ -346,7 +350,9 @@ class TestCavityWallRecommensations: assert recommender2.recommendations[6]["parts"][0]["depth"] == 52.5 def test_timber_frame_wall(self): - input_property3 = Property(id=1, postcode="F4k3 2", address="223 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"property-type": "House", "county": "Derbyshire", "built-form": "Semi-Detached"} + input_property3 = Property(id=1, postcode="F4k3 2", address="223 fake street", epc_record=epc_record) input_property3.walls = { 'original_description': 'Timber frame, as built, no insulation (assumed)', 'clean_description': 'Timber frame, as built, no insulation', @@ -361,7 +367,6 @@ class TestCavityWallRecommensations: input_property3.age_band = "B" input_property3.insulation_wall_area = 99 input_property3.restricted_measures = False - input_property3.data = {"property-type": "House", "county": "Derbyshire", "built-form": "Semi-Detached"} assert input_property3.walls["is_timber_frame"] @@ -388,7 +393,9 @@ class TestCavityWallRecommensations: assert recommender3.recommendations[1]["parts"][0]["depth"] == 150.0 def test_granite_or_whinstone_wall(self): - input_property4 = Property(id=1, postcode="F4k3 2", address="223 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"property-type": "Bungalow", "county": "Derbyshire", "built-form": "Detached"} + input_property4 = Property(id=1, postcode="F4k3 2", address="223 fake street", epc_record=epc_record) input_property4.walls = { 'original_description': 'Granite or whinstone, as built, no insulation (assumed)', 'clean_description': 'Granite or whinstone, as built, no insulation', @@ -403,7 +410,6 @@ class TestCavityWallRecommensations: input_property4.age_band = "A" input_property4.insulation_wall_area = 223 input_property4.restricted_measures = False - input_property4.data = {"property-type": "Bungalow", "county": "Derbyshire", "built-form": "Detached"} assert input_property4.walls["is_granite_or_whinstone"] @@ -430,7 +436,9 @@ class TestCavityWallRecommensations: assert recommender4.recommendations[1]["parts"][0]["depth"] == 150 def test_cob_wall(self): - input_property5 = Property(id=1, postcode="F4k3 2", address="223 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"property-type": "Bungalow", "county": "Derbyshire", "built-form": "Detached"} + input_property5 = Property(id=1, postcode="F4k3 2", address="223 fake street", epc_record=epc_record) input_property5.walls = { 'original_description': 'Cob, as built', 'clean_description': 'Cob, as built', @@ -445,7 +453,6 @@ class TestCavityWallRecommensations: input_property5.age_band = "E" input_property5.insulation_wall_area = 77 input_property5.restricted_measures = False - input_property5.data = {"property-type": "Bungalow", "county": "Derbyshire", "built-form": "Detached"} assert input_property5.walls["is_cob"] @@ -472,7 +479,9 @@ class TestCavityWallRecommensations: assert recommender5.recommendations[3]["parts"][0]["depth"] == 100 def test_sandstone_or_limestone_wall(self): - input_property6 = Property(id=1, postcode="F4k3 6", address="623 fake street") + epc_record = EPCRecord() + epc_record.prepared_epc = {"property-type": "House", "county": "Derbyshire", "built-form": "Mid-Terrace"} + input_property6 = Property(id=1, postcode="F4k3 6", address="623 fake street", epc_record=epc_record) input_property6.walls = { 'original_description': 'Sandstone or limestone, as built, no insulation (assumed)', 'clean_description': 'Sandstone or limestone, as built, no insulation', @@ -487,7 +496,6 @@ class TestCavityWallRecommensations: input_property6.age_band = "F" input_property6.insulation_wall_area = 350 input_property6.restricted_measures = False - input_property6.data = {"property-type": "House", "county": "Derbyshire", "built-form": "Mid-Terrace"} assert input_property6.walls["is_sandstone_or_limestone"] diff --git a/recommendations/tests/test_window_recommendations.py b/recommendations/tests/test_window_recommendations.py index 664a1e39..36e70834 100644 --- a/recommendations/tests/test_window_recommendations.py +++ b/recommendations/tests/test_window_recommendations.py @@ -1,6 +1,7 @@ from recommendations.WindowsRecommendations import WindowsRecommendations from backend.Property import Property from recommendations.tests.test_data.materials import materials +from etl.epc.Record import EPCRecord class TestWindowRecommendations: @@ -10,16 +11,17 @@ class TestWindowRecommendations: For this property, we expect all windows to be single glazed and should recommend full double glazing :return: """ - + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 0, + "uprn": 0 + } property_1 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 0, - "uprn": 0 - } + epc_record=epc_record ) property_1.windows = { 'original_description': 'Single glazed', 'has_glazing': False, 'glazing_coverage': 'full', @@ -47,16 +49,17 @@ class TestWindowRecommendations: double glazing :return: """ - + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 33, + "uprn": 0 + } property_2 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 33, - "uprn": 0 - } + epc_record=epc_record ) property_2.windows = {'original_description': 'Mostly double glazing', 'has_glazing': True, 'glazing_coverage': 'most', @@ -81,16 +84,17 @@ class TestWindowRecommendations: This property has full double glazing so we shouldn't recommend anything :return: """ - + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 100, + "uprn": 0 + } property_3 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 80, - "uprn": 0 - } + epc_record=epc_record ) property_3.windows = {'original_description': 'Fully double glazed', 'has_glazing': True, 'glazing_coverage': 'full', @@ -106,15 +110,17 @@ class TestWindowRecommendations: assert not recommender3.recommendation def test_fully_secondary_glazed(self): + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 100, + "uprn": 0 + } property_4 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 100, - "uprn": 0 - } + epc_record=epc_record ) property_4.windows = {'original_description': 'Full secondary glazing', 'has_glazing': True, 'glazing_coverage': 'full', @@ -130,15 +136,17 @@ class TestWindowRecommendations: assert not recommender4.recommendation def test_partial_secondary_glazing(self): + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 50, + "uprn": 0 + } property_5 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 50, - "uprn": 0 - } + epc_record=epc_record ) property_5.windows = {'original_description': 'Partial secondary glazing', 'has_glazing': True, 'glazing_coverage': 'partial', @@ -160,15 +168,18 @@ class TestWindowRecommendations: 'labour_days': 0.8125, 'is_secondary_glazing': True}] def test_single_glazed_restricted_measures(self): + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 0, + "uprn": 0 + } + property_6 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 0, - "uprn": 0 - } + epc_record=epc_record ) property_6.windows = {'original_description': 'Single glazed', 'has_glazing': False, 'glazing_coverage': None, 'glazing_type': 'single', @@ -195,15 +206,17 @@ class TestWindowRecommendations: ] def test_full_triple_glazed(self): + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 100, + "uprn": 0 + } property_7 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 100, - "uprn": 0 - } + epc_record=epc_record ) property_7.windows = {'original_description': 'Fully triple glazed', 'has_glazing': True, 'glazing_coverage': 'full', @@ -222,16 +235,17 @@ class TestWindowRecommendations: """ We should just recommend double glazing to the remaining windows, since it's a cheaper option """ - + epc_record = EPCRecord() + epc_record.prepared_epc = { + "county": "Wychavon", + "multi-glaze-proportion": 80, + "uprn": 1 + } property_8 = Property( id=1, postcode='1', address='1', - data={ - "county": "Wychavon", - "multi-glaze-proportion": 80, - "uprn": 1 - } + epc_record=epc_record ) property_8.windows = {'original_description': 'Mostly triple glazing', 'has_glazing': True, 'glazing_coverage': 'most',