diff --git a/tests/e2e/test_epc_prediction_e2e.py b/tests/e2e/test_epc_prediction_e2e.py index 671ad117..80ef7f10 100644 --- a/tests/e2e/test_epc_prediction_e2e.py +++ b/tests/e2e/test_epc_prediction_e2e.py @@ -28,11 +28,11 @@ from datatypes.epc.domain.epc_property_data import EpcPropertyData from datatypes.epc.domain.mapper import EpcPropertyDataMapper from datatypes.epc.search.epc_search_result import EpcSearchResult from domain.epc_prediction.epc_prediction import EpcPrediction -from domain.epc_prediction.prediction_target import PredictionTargetAttributes from domain.geospatial.coordinates import Coordinates from domain.geospatial.planning_restrictions import PlanningRestrictions from domain.geospatial.spatial_reference import SpatialReference from domain.property.property import Property +from infrastructure.postgres.property_override_table import PropertyOverrideRow from infrastructure.postgres.property_table import PropertyRow from orchestration.ingestion_orchestrator import IngestionOrchestrator from repositories.comparable_properties.epc_comparable_properties_repository import ( @@ -41,6 +41,12 @@ from repositories.comparable_properties.epc_comparable_properties_repository imp from repositories.epc.epc_postgres_repository import EpcPostgresRepository from repositories.geospatial.geospatial_repository import GeospatialRepository from repositories.postgres_unit_of_work import PostgresUnitOfWork +from repositories.property.override_backed_prediction_attributes_reader import ( + OverrideBackedPredictionAttributesReader, +) +from repositories.property.property_overrides_postgres_reader import ( + PropertyOverridesPostgresReader, +) from repositories.property.property_postgres_repository import ( PropertyPostgresRepository, ) @@ -105,14 +111,6 @@ class _NoSolarFetcher: return {} -class _FakeAttributesReader: - """Stands in for Jun-te's property_overrides read adapter: the landlord-known - property type (here a House, code "0", matching the cohort).""" - - def attributes_for(self, property_id: int) -> PredictionTargetAttributes: - return PredictionTargetAttributes(property_type="0", built_form="2") - - def _cohort_results() -> list[EpcSearchResult]: return [ EpcSearchResult( @@ -135,7 +133,9 @@ def test_epc_less_property_is_predicted_persisted_and_resolved_end_to_end( db_engine: Engine, ) -> None: # Arrange — an EPC-less Property exists in the database (postcode + UPRN known, - # no EPC lodged), plus its postcode cohort behind the faked EPC API. + # no EPC lodged), plus its postcode cohort behind the faked EPC API, plus the + # landlord overrides the finaliser resolved for it (House / Semi-Detached) that + # the real read adapter will translate into the gov-code space ("0" / "2"). with Session(db_engine) as session: row = PropertyRow( portfolio_id=1, postcode=_POSTCODE, address="1 Target Street", uprn=10000 @@ -145,6 +145,28 @@ def test_epc_less_property_is_predicted_persisted_and_resolved_end_to_end( property_id = row.id assert property_id is not None + session.add( + PropertyOverrideRow( + property_id=property_id, + portfolio_id=1, + building_part=0, + override_component="property_type", + override_value="House", + original_spreadsheet_description="3-bed semi", + ) + ) + session.add( + PropertyOverrideRow( + property_id=property_id, + portfolio_id=1, + building_part=0, + override_component="built_form_type", + override_value="Semi-Detached", + original_spreadsheet_description="3-bed semi", + ) + ) + session.commit() + cohort_coords = {20000 + i: Coordinates(longitude=-1.55, latitude=53.81) for i in range(3)} comparables_repo = EpcComparablePropertiesRepository( _FakeCohortEpcClient(_cohort_results()), _FakeGeospatialRepo(cohort_coords) @@ -155,7 +177,9 @@ def test_epc_less_property_is_predicted_persisted_and_resolved_end_to_end( geospatial_repo=_FakeGeospatialRepo({10000: Coordinates(longitude=-1.55, latitude=53.81)}), solar_fetcher=_NoSolarFetcher(), comparables_repo=comparables_repo, - prediction_attributes_reader=_FakeAttributesReader(), + prediction_attributes_reader=OverrideBackedPredictionAttributesReader( + PropertyOverridesPostgresReader(lambda: Session(db_engine)) + ), epc_prediction=EpcPrediction(), )