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"