diff --git a/backend/documents_parser/tests/fixtures/Summary_001479.pdf b/backend/documents_parser/tests/fixtures/Summary_001479.pdf new file mode 100644 index 00000000..4a84bffb Binary files /dev/null and b/backend/documents_parser/tests/fixtures/Summary_001479.pdf differ diff --git a/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py b/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py index 61848a2b..539ced6f 100644 --- a/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py +++ b/backend/documents_parser/tests/test_summary_pdf_mapper_chain.py @@ -44,6 +44,7 @@ _SUMMARY_000480_PDF = _FIXTURES / "Summary_000480.pdf" _SUMMARY_000487_PDF = _FIXTURES / "Summary_000487.pdf" _SUMMARY_000490_PDF = _FIXTURES / "Summary_000490.pdf" _SUMMARY_000516_PDF = _FIXTURES / "Summary_000516.pdf" +_SUMMARY_001479_PDF = _FIXTURES / "Summary_001479.pdf" def _summary_pdf_to_textract_style_pages(pdf_path: Path) -> list[str]: @@ -249,3 +250,21 @@ def test_summary_000490_full_chain_sap_matches_worksheet_pdf_exactly() -> None: # Assert worksheet_unrounded_sap = 57.3979 assert abs(result.sap_score_continuous - worksheet_unrounded_sap) < 1e-4 + + +def test_summary_001479_mapper_extensions_count_matches_extension_bps() -> None: + # Arrange — cert 0535-9020-6509-0821-6222 (Summary_001479) is the first + # cohort cert with an actual GOV.UK API counterpart. Worksheet PDF + # lodges Main + Extension 1 + Extension 2 (3 building parts, 2 + # extensions). Pre-slice the Elmhurst mapper hard-coded + # `extensions_count=0` regardless of survey.extensions; this asserts + # the count flows through. + pages = _summary_pdf_to_textract_style_pages(_SUMMARY_001479_PDF) + site_notes = ElmhurstSiteNotesExtractor(pages).extract() + + # Act + epc = EpcPropertyDataMapper.from_elmhurst_site_notes(site_notes) + + # Assert + assert epc.extensions_count == 2 + assert len(epc.sap_building_parts) == 3 diff --git a/datatypes/epc/domain/mapper.py b/datatypes/epc/domain/mapper.py index 6f82123c..1dda5e4f 100644 --- a/datatypes/epc/domain/mapper.py +++ b/datatypes/epc/domain/mapper.py @@ -309,7 +309,7 @@ class EpcPropertyDataMapper: has_hot_water_cylinder=survey.water_heating.hot_water_cylinder_present, has_fixed_air_conditioning=survey.ventilation.fixed_space_cooling, wet_rooms_count=0, - extensions_count=0, + extensions_count=len(survey.extensions), heated_rooms_count=survey.heated_habitable_rooms, open_chimneys_count=survey.ventilation.open_chimneys_count, habitable_rooms_count=survey.habitable_rooms,