diff --git a/Changelog.md b/Changelog.md index c0d18833f58add82d79edda26371e12e080983d5..9b87b767492efe64bcf210e63ca9dbd667ce545c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,8 @@ # Changelog +## [0.11] - 2025-04-29 +- Changed NC-CC-DEP validation. The validator raises error when all NC, CC and DEP are missing + ## [0.10] - 2025-04-29 - Enhance NC-CC-DEP validation to raise errors when any field is missing diff --git a/sage_validation/file_validator/forms.py b/sage_validation/file_validator/forms.py index 040aaf6eb0624373696d0eb8544c59dd07f5d9b2..5a1034ffd46797ba97f7a40c931d7da2693d4d8b 100644 --- a/sage_validation/file_validator/forms.py +++ b/sage_validation/file_validator/forms.py @@ -244,9 +244,11 @@ class CSVUploadForm(forms.Form): dep = row.get(dep_field) nominal_account_name = row.get(nominal_account_field) + if not cc and not dep and not nominal_account_name: + errors.append( + f"Row {index}: Missing values in '{cc_field}', '{dep_field}', and '{nominal_account_field}'.") + continue 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/setup.py b/setup.py index cdec35ed21d6be861871f708e6a32c3a72b34ade..d4a53916ce318a47534c27fddecd4a72e44ae6a8 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import find_packages, setup setup( name="sage-validation", - version="0.10", + version="0.11", packages=find_packages(), include_package_data=True, install_requires=[ diff --git a/test/test_file_validator/test_forms.py b/test/test_file_validator/test_forms.py index 0360f71f7edfc4d83e7c969b0281fc485b0ed089..3a779cdac6eb0a0332b0451f61ccaf47fb2f90c7 100644 --- a/test/test_file_validator/test_forms.py +++ b/test/test_file_validator/test_forms.py @@ -101,13 +101,15 @@ def test_validate_nc_cc_dep_combination_against_meo_sage_account_blank_values( sample_input_file, { "NominalAnalysisNominalCostCentre/1": "", + "NominalAnalysisNominalDepartment/1": "", + "NominalAnalysisNominalAccountNumber/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'." + " and 'NominalAnalysisNominalAccountNumber/1'." in str(form.errors["file"][0]) )