mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-07-27 23:35:01 +00:00
Model the newer stored survey when refetching EPCs 🟥
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
04f72e2d32
commit
7a2f29027c
1 changed files with 62 additions and 0 deletions
|
|
@ -1519,6 +1519,68 @@ def test_same_day_assessments_prefer_the_stored_survey() -> None:
|
|||
assert chosen_is_fetched is False
|
||||
|
||||
|
||||
def test_refetch_epc_true_models_the_newer_stored_survey_without_resaving_it() -> None:
|
||||
"""#1589: refetch_epc=True must not let an older gov cert override a newer
|
||||
stored survey. The stored survey is modelled, and is not re-persisted."""
|
||||
# Arrange
|
||||
mock_engine = _engine_mock([PROPERTY_ID], [UPRN], [POSTCODE])
|
||||
stored_epc = _lodged_epc("2026-05-01") # PasHub site-notes survey
|
||||
gov_epc = _lodged_epc("2023-12-01") # older public cert
|
||||
mock_plan = _plan_mock()
|
||||
mock_uow = MagicMock()
|
||||
|
||||
with ExitStack() as stack:
|
||||
stack.enter_context(patch("applications.modelling_e2e.handler.os.environ", _ENV))
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler._get_engine", return_value=mock_engine)
|
||||
)
|
||||
mock_epc_client = stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.EpcClientService")
|
||||
).return_value
|
||||
mock_epc_client.get_by_uprn.return_value = gov_epc
|
||||
stack.enter_context(patch("applications.modelling_e2e.handler.GeospatialS3Repository"))
|
||||
stack.enter_context(patch("applications.modelling_e2e.handler.GoogleSolarApiClient"))
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler._spatial_for", return_value=None)
|
||||
)
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler._solar_insights_for", return_value=None)
|
||||
)
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.overlays_from", return_value=[])
|
||||
)
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.PropertyOverridesPostgresReader")
|
||||
).return_value.overrides_for_many.return_value = {}
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.ScenarioPostgresRepository")
|
||||
).return_value.get_many.return_value = [MagicMock()]
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.catalogue_snapshot_with_off_catalogue_overrides")
|
||||
)
|
||||
stack.enter_context(patch("applications.modelling_e2e.handler.Session"))
|
||||
mock_run_modelling = stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.run_modelling", return_value=mock_plan)
|
||||
)
|
||||
stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.EpcPostgresRepository")
|
||||
).return_value.get_for_properties.return_value = {UPRN: stored_epc}
|
||||
MockUoW = stack.enter_context(
|
||||
patch("applications.modelling_e2e.handler.PostgresUnitOfWork")
|
||||
)
|
||||
MockUoW.return_value.__enter__.return_value = mock_uow
|
||||
MockUoW.return_value.__exit__.return_value = False
|
||||
|
||||
# Act
|
||||
_call_handler({**_BODY, "refetch_epc": True})
|
||||
|
||||
# Assert — the survey was modelled, not the older gov cert...
|
||||
modelled_epc = mock_run_modelling.call_args.args[0]
|
||||
assert modelled_epc.inspection_date == date(2026, 5, 1)
|
||||
# ...and it came from the DB unchanged, so it is not re-saved
|
||||
mock_uow.epc.save_batch.assert_not_called()
|
||||
|
||||
|
||||
def test_refetch_epc_false_with_stored_epc_skips_api_call() -> None:
|
||||
"""refetch_epc=False + stored lodged EPC present: EpcClientService.get_by_uprn
|
||||
is never called; the stored EPC is used and reaches run_modelling."""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue