From 101860fac1dfd2eb42b1e5f5480f47d2d8748083 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 16 Apr 2026 14:01:05 +0000 Subject: [PATCH] =?UTF-8?q?Load=20BuildingConstruction=20from=20SiteNotes?= =?UTF-8?q?=20JSON=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../documents_parser/tests/test_extractor.py | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/backend/documents_parser/tests/test_extractor.py b/backend/documents_parser/tests/test_extractor.py index a40e9d77..c1ab52bf 100644 --- a/backend/documents_parser/tests/test_extractor.py +++ b/backend/documents_parser/tests/test_extractor.py @@ -4,7 +4,14 @@ import os import pytest from backend.documents_parser.extractor import PasHubRdSapSiteNotesExtractor -from datatypes.epc.surveys.pashub_rdsap_site_notes import General, PasHubRdSapSiteNotes +from datatypes.epc.surveys.pashub_rdsap_site_notes import ( + BuildingConstruction, + ExtensionConstruction, + FloorConstruction, + General, + MainBuildingConstruction, + PasHubRdSapSiteNotes, +) FIXTURES = os.path.join(os.path.dirname(__file__), "fixtures") @@ -75,3 +82,82 @@ class TestGeneral: gas_meter_accessible=True, measurements_location="Internal", ) + + +class TestBuildingConstruction: + @pytest.fixture + def construction(self) -> BuildingConstruction: + return PasHubRdSapSiteNotesExtractor( + load_text_fixture() + ).extract_building_construction() + + def test_main_building_wall_u_value_known_is_false( + self, construction: BuildingConstruction + ) -> None: + assert construction.main_building.wall_u_value_known is False + + def test_main_building_wall_thickness_mm( + self, construction: BuildingConstruction + ) -> None: + assert construction.main_building.wall_thickness_mm == 310 + + def test_main_building_filled_cavity_indicators_present( + self, construction: BuildingConstruction + ) -> None: + assert ( + construction.main_building.filled_cavity_indicators + == "evidence of cavity fill drill holes" + ) + + def test_extension_filled_cavity_indicators_absent( + self, construction: BuildingConstruction + ) -> None: + assert construction.extensions is not None + assert construction.extensions[0].filled_cavity_indicators is None + + def test_one_extension(self, construction: BuildingConstruction) -> None: + assert construction.extensions is not None + assert len(construction.extensions) == 1 + + def test_extension_id(self, construction: BuildingConstruction) -> None: + assert construction.extensions is not None + assert construction.extensions[0].id == 1 + + def test_full_building_construction( + self, construction: BuildingConstruction + ) -> None: + assert construction == BuildingConstruction( + main_building=MainBuildingConstruction( + age_range="1950-1966", + age_indicators="local knowledge, enquiries of owner", + walls_construction_type="Cavity", + cavity_construction_indicators="wall thickness over 270 mm", + walls_insulation_type="Filled Cavity", + filled_cavity_indicators="evidence of cavity fill drill holes", + thermal_conductivity_of_wall_insulation="Unknown", + wall_u_value_known=False, + wall_thickness_mm=310, + party_wall_construction_type="Cavity Masonry, Filled", + ), + floor=FloorConstruction( + floor_type="Ground Floor", + floor_construction="Solid", + floor_insulation_type="As Built", + floor_u_value_known=False, + ), + extensions=[ + ExtensionConstruction( + id=1, + age_range="2003-2006", + age_indicators="local knowledge, enquiries of owner", + walls_construction_type="Cavity", + cavity_construction_indicators="wall thickness over 270 mm", + walls_insulation_type="As built", + thermal_conductivity_of_wall_insulation="Unknown", + wall_u_value_known=False, + wall_thickness_mm=310, + party_wall_construction_type="Cavity Masonry, Filled", + filled_cavity_indicators=None, + ) + ], + )