Load RoofSpace from SiteNotes JSON 🟥

This commit is contained in:
Daniel Roth 2026-04-16 14:11:44 +00:00
parent 770bf1293d
commit 3960998fee
2 changed files with 61 additions and 0 deletions

View file

@ -6,12 +6,15 @@ from datatypes.epc.surveys.pashub_rdsap_site_notes import (
BuildingMeasurements,
ExtensionConstruction,
ExtensionMeasurements,
ExtensionRoofSpace,
FloorConstruction,
FloorMeasurement,
General,
MainBuildingConstruction,
MainBuildingMeasurements,
PasHubRdSapSiteNotes,
RoofSpace,
RoofSpaceDetail,
)
@ -224,6 +227,9 @@ class PasHubRdSapSiteNotesExtractor:
extensions=extensions if extensions else None,
)
def extract_roof_space(self) -> RoofSpace:
raise NotImplementedError
def _parse_floor_measurements(self, data: List[str]) -> List[FloorMeasurement]:
floors = []
i = 0

View file

@ -9,12 +9,15 @@ from datatypes.epc.surveys.pashub_rdsap_site_notes import (
BuildingMeasurements,
ExtensionConstruction,
ExtensionMeasurements,
ExtensionRoofSpace,
FloorConstruction,
FloorMeasurement,
General,
MainBuildingConstruction,
MainBuildingMeasurements,
PasHubRdSapSiteNotes,
RoofSpace,
RoofSpaceDetail,
)
FIXTURES = os.path.join(os.path.dirname(__file__), "fixtures")
@ -237,3 +240,55 @@ class TestBuildingMeasurements:
)
],
)
class TestRoofSpace:
@pytest.fixture
def roof_space(self) -> RoofSpace:
return PasHubRdSapSiteNotesExtractor(load_text_fixture()).extract_roof_space()
def test_main_building_insulation_thickness_mm(
self, roof_space: RoofSpace
) -> None:
assert roof_space.main_building.insulation_thickness_mm == 100
def test_main_building_insulation_thickness_string_absent(
self, roof_space: RoofSpace
) -> None:
assert roof_space.main_building.insulation_thickness is None
def test_main_building_rooms_in_roof(self, roof_space: RoofSpace) -> None:
assert roof_space.main_building.rooms_in_roof is False
def test_main_building_roof_u_value_known(self, roof_space: RoofSpace) -> None:
assert roof_space.main_building.roof_u_value_known is False
def test_extension_uses_string_thickness(self, roof_space: RoofSpace) -> None:
assert roof_space.extensions is not None
assert roof_space.extensions[0].insulation_thickness == "As built"
assert roof_space.extensions[0].insulation_thickness_mm is None
def test_full_roof_space(self, roof_space: RoofSpace) -> None:
assert roof_space == RoofSpace(
main_building=RoofSpaceDetail(
construction_type="Pitched roof (Slates or tiles), Access to loft",
insulation_at="Joists",
roof_u_value_known=False,
cavity_wall_construction_indicators="cavity visible in roof space",
rooms_in_roof=False,
insulation_thickness_mm=100,
insulation_thickness=None,
),
extensions=[
ExtensionRoofSpace(
id=1,
construction_type="Pitched roof, Sloping ceiling",
insulation_at="Sloping ceiling insulation",
roof_u_value_known=False,
cavity_wall_construction_indicators="No indicator of construction visible",
rooms_in_roof=False,
insulation_thickness_mm=None,
insulation_thickness="As built",
)
],
)