From ca224515f972f09cfd58438ea6b0ba630b4f5bd5 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Tue, 2 Jun 2026 14:20:35 +0000 Subject: [PATCH] =?UTF-8?q?MCS=20cert=20identified=20by=20evidence=5Fcateg?= =?UTF-8?q?ory=20in=20get=5Fcore=5Ffile=5Ftype=20=F0=9F=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/db/models/uploaded_file.py | 1 + backend/pashub_fetcher/core_files.py | 7 +++- .../pashub_fetcher/tests/test_core_files.py | 33 +++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/backend/app/db/models/uploaded_file.py b/backend/app/db/models/uploaded_file.py index b5367305..a3ea70ca 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" + MCS_CERTIFICATE = "mcs_certificate" OTHER = "other" diff --git a/backend/pashub_fetcher/core_files.py b/backend/pashub_fetcher/core_files.py index e63511eb..1ee3046b 100644 --- a/backend/pashub_fetcher/core_files.py +++ b/backend/pashub_fetcher/core_files.py @@ -17,6 +17,7 @@ class CoreFiles(Enum): IMPROVEMENT_OPTION_EVALUATION = "Improvement Option Evaluation" MEDIUM_TERM_IMPROVEMENT_PLAN = "Medium Term Improvement Plan" RETROFIT_DESIGN_DOC = "Retrofit Design Doc" + MCS_CERTIFICATE = "MCS Certificate" _CORE_FILE_TO_FILE_TYPE: dict[CoreFiles, str] = { @@ -32,6 +33,7 @@ _CORE_FILE_TO_FILE_TYPE: dict[CoreFiles, str] = { CoreFiles.IMPROVEMENT_OPTION_EVALUATION: FileTypeEnum.IMPROVEMENT_OPTION_EVALUATION.value, CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN: FileTypeEnum.MEDIUM_TERM_IMPROVEMENT_PLAN.value, CoreFiles.RETROFIT_DESIGN_DOC: FileTypeEnum.RETROFIT_DESIGN_DOC.value, + CoreFiles.MCS_CERTIFICATE: FileTypeEnum.MCS_CERTIFICATE.value, } @@ -56,6 +58,7 @@ def get_core_file_type( CoreFiles.RETROFIT_DESIGN_DOC, CoreFiles.IMPROVEMENT_OPTION_EVALUATION, CoreFiles.MEDIUM_TERM_IMPROVEMENT_PLAN, + CoreFiles.MCS_CERTIFICATE, } for core_file in CoreFiles: @@ -68,7 +71,9 @@ def get_core_file_type( return None -def get_file_type_string(filename: str) -> Optional[str]: +def get_file_type_string( + filename: str, evidence_category: Optional[str] = None +) -> Optional[str]: core_file: Optional[CoreFiles] = get_core_file_type(filename) if core_file is None: diff --git a/backend/pashub_fetcher/tests/test_core_files.py b/backend/pashub_fetcher/tests/test_core_files.py index 3c1d11b8..c14a5a83 100644 --- a/backend/pashub_fetcher/tests/test_core_files.py +++ b/backend/pashub_fetcher/tests/test_core_files.py @@ -183,3 +183,36 @@ def test_core_file_for_osm_fallback_does_not_fire_when_evidence_category_present # Assert assert result is None + + +def test_core_file_for_mcs_compliance_certificate_returns_mcs_certificate() -> None: + # Arrange + filename = "MCS_cert_job123.pdf" + + # Act + result = get_core_file_type(filename, evidence_category="mcs compliance certificate") + + # Assert + assert result == CoreFiles.MCS_CERTIFICATE + + +def test_core_file_for_mcs_compliance_certificate_is_case_insensitive() -> None: + # Arrange + filename = "some_cert.pdf" + + # Act + result = get_core_file_type(filename, evidence_category="MCS Compliance Certificate") + + # Assert + assert result == CoreFiles.MCS_CERTIFICATE + + +def test_get_file_type_string_with_mcs_evidence_category_returns_mcs_certificate() -> None: + # Arrange + filename = "some_cert.pdf" + + # Act + result = get_file_type_string(filename, evidence_category="MCS Compliance Certificate") + + # Assert + assert result == "mcs_certificate"