From 568c07d172ee0502cdfd4486391b8ee4b310c753 Mon Sep 17 00:00:00 2001 From: Neda Moeini <neda.moeini@geant.org> Date: Tue, 29 Apr 2025 11:23:38 +0200 Subject: [PATCH] Improve validation error handling for missing nominal analysis fields in CSV upload --- sage_validation/file_validator/forms.py | 2 ++ test/test_file_validator/test_forms.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/sage_validation/file_validator/forms.py b/sage_validation/file_validator/forms.py index 990b83c..040aaf6 100644 --- a/sage_validation/file_validator/forms.py +++ b/sage_validation/file_validator/forms.py @@ -245,6 +245,8 @@ class CSVUploadForm(forms.Form): nominal_account_name = row.get(nominal_account_field) if not cc or not dep or not nominal_account_name: + errors.append(f"Row {index}: Missing values in '{cc_field}', '{dep_field}', or " + f"'{nominal_account_field}'.") continue cc_type = cost_centre_map.get(cc) diff --git a/test/test_file_validator/test_forms.py b/test/test_file_validator/test_forms.py index d329630..0360f71 100644 --- a/test/test_file_validator/test_forms.py +++ b/test/test_file_validator/test_forms.py @@ -93,6 +93,24 @@ def test_validate_nc_cc_dep_combination_against_meo_sage_account( in str(form.errors["file"][0])) +def test_validate_nc_cc_dep_combination_against_meo_sage_account_blank_values( + sample_input_file: SimpleUploadedFile, mock_meo_database: MagicMock +) -> None: + """Test validation for nominal analysis fields against MEO valid Sage accounts.""" + modified_file = create_modified_csv( + sample_input_file, + { + "NominalAnalysisNominalCostCentre/1": "", + }) + + form = CSVUploadForm(files={"file": modified_file}) + assert not form.is_valid() + assert ( + "Row 1: Missing values in 'NominalAnalysisNominalCostCentre/1', 'NominalAnalysisNominalDepartment/1'," + " or 'NominalAnalysisNominalAccountNumber/1'." + in str(form.errors["file"][0]) + ) + def test_cheque_fields_must_be_empty(sample_input_file: SimpleUploadedFile, mock_meo_database: MagicMock) -> None: """Test that cheque fields must be empty.""" modified_file = create_modified_csv(sample_input_file, -- GitLab