From 36a671c62bae9aef3170f7f22deb483196113b90 Mon Sep 17 00:00:00 2001
From: Neda Moeini <neda.moeini@geant.org>
Date: Thu, 27 Feb 2025 16:07:25 +0100
Subject: [PATCH] Test validate nc cc dep combination against meo sage account

---
 test/test_file_validator/test_forms.py | 44 +++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/test/test_file_validator/test_forms.py b/test/test_file_validator/test_forms.py
index db0a25a..583fbbe 100644
--- a/test/test_file_validator/test_forms.py
+++ b/test/test_file_validator/test_forms.py
@@ -47,6 +47,48 @@ def test_source_and_trader_type_validation(sample_input_file, mock_meo_database)
     modified_file = SimpleUploadedFile("test_modified.csv", output.getvalue().encode("utf-8"), content_type="text/csv")
 
     form = CSVUploadForm(files={"file": modified_file})
-    assert not form.is_valid(), "Form should be invalid due to incorrect Source and SYSTraderTranType values"
+    assert not form.is_valid()
     assert "Row 1: 'Source' must be 80" in form.errors["file"][0]
     assert "Row 1: 'SYSTraderTranType' must be 4" in form.errors["file"][1]
+
+
+def test_validate_nominal_analysis_account(sample_input_file, mock_meo_database):
+    """Test validation for nominal analysis account."""
+
+    csv_content = sample_input_file.read().decode("utf-8").splitlines()
+    reader = csv.DictReader(csv_content)
+    rows = list(reader)
+    rows[0]["NominalAnalysisNominalAnalysisNarrative/1"] = "Invalid Name"
+
+    # Rebuild the CSV with modified values
+    output = io.StringIO()
+    writer = csv.DictWriter(output, fieldnames=reader.fieldnames)
+    writer.writeheader()
+    writer.writerows(rows)
+    modified_file = SimpleUploadedFile("test_modified.csv", output.getvalue().encode("utf-8"), content_type="text/csv")
+
+    form = CSVUploadForm(files={"file": modified_file})
+    assert not form.is_valid()
+    assert (f"Row 1: 'AccountNumber' must match 'Sample Narrative' in 'NominalAnalysisNominalAnalysisNarrative/1',"
+            f" but found 'Invalid Name'.") == form.errors["file"][0]
+
+
+def test_validate_nc_cc_dep_combination_against_meo_sage_account(sample_input_file, mock_meo_database):
+    """Test validation for nominal analysis fields against MEO valid Sage accounts."""
+    csv_content = sample_input_file.read().decode("utf-8").splitlines()
+    reader = csv.DictReader(csv_content)
+    rows = list(reader)
+
+    rows[0]["NominalAnalysisNominalCostCentre/1"] = "Invalid_CC"
+    rows[0]["NominalAnalysisNominalAccountNumber/1"] = "Invalid_Account"
+
+    output = io.StringIO()
+    writer = csv.DictWriter(output, fieldnames=reader.fieldnames)
+    writer.writeheader()
+    writer.writerows(rows)
+    modified_file = SimpleUploadedFile("test_modified.csv", output.getvalue().encode("utf-8"), content_type="text/csv")
+
+    form = CSVUploadForm(files={"file": modified_file})
+    assert not form.is_valid()
+    assert "Row 1: 'NominalAnalysisNominalCostCentre/1' (Invalid_CC) is not a valid cost centre." in str(form.errors["file"][0])
+
-- 
GitLab