diff --git a/backend/app/db/models/uploaded_file.py b/backend/app/db/models/uploaded_file.py index b6a73d5d..b5367305 100644 --- a/backend/app/db/models/uploaded_file.py +++ b/backend/app/db/models/uploaded_file.py @@ -21,6 +21,7 @@ class FileTypeEnum(enum.Enum): IMPROVEMENT_OPTION_EVALUATION = "improvement_option_evaluation" MEDIUM_TERM_IMPROVEMENT_PLAN = "medium_term_improvement_plan" RETROFIT_DESIGN_DOC = "retrofit_design_doc" + OTHER = "other" class FileSourceEnum(enum.Enum): diff --git a/backend/pashub_fetcher/pashub_service.py b/backend/pashub_fetcher/pashub_service.py index a4b34cab..a54036a8 100644 --- a/backend/pashub_fetcher/pashub_service.py +++ b/backend/pashub_fetcher/pashub_service.py @@ -86,7 +86,7 @@ class PashubService: if active_client is not self._pashub_client: raise active_client = self._get_coordination_client() - downloaded = active_client.get_evidence_files_by_job_id( + downloaded: DownloadedFiles = active_client.get_evidence_files_by_job_id( job_id, include_other=request.get_other_files ) diff --git a/backend/pashub_fetcher/tests/test_pashub_service.py b/backend/pashub_fetcher/tests/test_pashub_service.py index eec928f3..d8467209 100644 --- a/backend/pashub_fetcher/tests/test_pashub_service.py +++ b/backend/pashub_fetcher/tests/test_pashub_service.py @@ -402,6 +402,38 @@ def test_run_deletes_other_temp_files_when_get_other_files_true() -> None: mock_remove.assert_any_call("/tmp/other.pdf") +# --------------------------------------------------------------------------- +# run(): get_other_files=True → other files uploaded to S3 +# --------------------------------------------------------------------------- + + +def test_run_uploads_other_files_to_s3_when_get_other_files_true() -> None: + # Arrange + mock_client = MagicMock(spec=PashubClient) + mock_client.get_uprn_by_job_id.return_value = None + mock_client.get_evidence_files_by_job_id.return_value = make_downloaded( + core=["/tmp/SiteNote_001.pdf"], + other=["/tmp/unknown_file.pdf"], + ) + + service = make_service(pashub_client=mock_client, s3_bucket="my-bucket") + + # Act + with ( + patch("backend.pashub_fetcher.pashub_service.upload_file_to_s3") as mock_s3, + patch("backend.pashub_fetcher.pashub_service.db_session"), + patch("backend.pashub_fetcher.pashub_service.os.remove"), + ): + service.run(make_request(uprn="12345", get_other_files=True)) + + # Assert + mock_s3.assert_any_call( + "/tmp/unknown_file.pdf", + "my-bucket", + "documents/uprn/12345/unknown_file.pdf", + ) + + def test_run_warns_and_continues_when_site_notes_parsing_fails() -> None: mock_client = MagicMock(spec=PashubClient) mock_client.get_uprn_by_job_id.return_value = None