From 4bcdb4823beb1d73462ecb4a37696916213b83ae Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 16 Apr 2026 14:24:11 +0000 Subject: [PATCH] =?UTF-8?q?Load=20Ventilation=20from=20SiteNotes=20JSON=20?= =?UTF-8?q?=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/documents_parser/extractor.py | 4 +++ .../documents_parser/tests/test_extractor.py | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/backend/documents_parser/extractor.py b/backend/documents_parser/extractor.py index 1e5531d4..41111a9b 100644 --- a/backend/documents_parser/extractor.py +++ b/backend/documents_parser/extractor.py @@ -18,6 +18,7 @@ from datatypes.epc.surveys.pashub_rdsap_site_notes import ( RoofSpace, RoofSpaceDetail, SecondaryHeating, + Ventilation, WaterHeating, Window, ) @@ -294,6 +295,9 @@ class PasHubRdSapSiteNotesExtractor: water_heating=self._parse_water_heating(hhw_section), ) + def extract_ventilation(self) -> Ventilation: + raise NotImplementedError + def _parse_main_heating(self, data: List[str]) -> MainHeating: return MainHeating( selection_method=self._get_in(data, "How would you like to select the Heating System?") or "", diff --git a/backend/documents_parser/tests/test_extractor.py b/backend/documents_parser/tests/test_extractor.py index 2076b500..cf8f94d0 100644 --- a/backend/documents_parser/tests/test_extractor.py +++ b/backend/documents_parser/tests/test_extractor.py @@ -21,6 +21,7 @@ from datatypes.epc.surveys.pashub_rdsap_site_notes import ( RoofSpace, RoofSpaceDetail, SecondaryHeating, + Ventilation, WaterHeating, ) @@ -408,3 +409,36 @@ class TestHeatingAndHotWater: has_thermostat=None, ), ) + + +class TestVentilation: + @pytest.fixture + def ventilation(self) -> Ventilation: + return PasHubRdSapSiteNotesExtractor( + load_text_fixture() + ).extract_ventilation() + + def test_ventilation_type(self, ventilation: Ventilation) -> None: + assert ventilation.ventilation_type == "Mechanical Extract - Decentralised" + + def test_number_of_open_flues(self, ventilation: Ventilation) -> None: + assert ventilation.number_of_open_flues == 0 + + def test_ventilation_in_pcdf_database(self, ventilation: Ventilation) -> None: + assert ventilation.ventilation_in_pcdf_database is False + + def test_full_ventilation(self, ventilation: Ventilation) -> None: + assert ventilation == Ventilation( + ventilation_type="Mechanical Extract - Decentralised", + has_fixed_air_conditioning=False, + number_of_open_flues=0, + number_of_closed_flues=0, + number_of_boiler_flues=0, + number_of_other_flues=0, + number_of_extract_fans=0, + number_of_passive_vents=0, + number_of_flueless_gas_fires=0, + pressure_test="No test", + draught_lobby=False, + ventilation_in_pcdf_database=False, + )