Skip to content

Commit 7e772c5

Browse files
committed
remove bad json files and refactor csv test
1 parent 49f2ff3 commit 7e772c5

File tree

3 files changed

+52
-189
lines changed

3 files changed

+52
-189
lines changed

lambdas/shared/src/common/validator/validator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def _validate_expression(
8383
row = 2
8484

8585
if self.is_csv:
86-
expression_fieldname = expression["fieldNameCSV"]
86+
expression_fieldname = expression["fieldNameFlat"]
8787
else:
8888
expression_fieldname = expression["fieldNameFHIR"]
8989

lambdas/shared/tests/test_common/validator/schemas/test_school_schema.json

Lines changed: 0 additions & 164 deletions
This file was deleted.

lambdas/shared/tests/test_common/validator/test_application_csv_row.py

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,71 @@
66
from common.validator.validator import Validator
77

88
CSV_HEADER = (
9-
"academic_year,time_period,time_identifier,geographic_level,"
10-
"country_code,country_name,region_code,region_name,new_la_code,la_name,"
11-
"old_la_code,school_type,num_schools,enrolments,present_sessions,overall_attendance,"
12-
"approved_educational_activity,overall_absence,authorised_absence,unauthorised_absence,"
13-
"late_sessions,possible_sessions,reason_present_am,reason_present_pm,reason_present,"
14-
"reason_l_present_late_before_registers_closed"
9+
"NHS_NUMBER,PERSON_FORENAME,PERSON_SURNAME,SITE_CODE,"
10+
"PERFORMING_PROFESSIONAL_FORENAME,PERFORMING_PROFESSIONAL_SURNAME,PRIMARY_SOURCE,"
11+
"VACCINATION_PROCEDURE_CODE,VACCINATION_PROCEDURE_TERM,DOSE_SEQUENCE,"
12+
"VACCINE_PRODUCT_CODE,VACCINE_PRODUCT_TERM,VACCINE_MANUFACTURER,BATCH_NUMBER"
1513
)
1614

1715
schema_data_folder = Path(__file__).parent / "schemas"
18-
schemaFilePath = schema_data_folder / "test_school_schema.json"
16+
schemaFilePath = schema_data_folder / "test_schema.json"
1917

2018

2119
class TestValidator(unittest.TestCase):
20+
@staticmethod
21+
def build_row(header: str, values: dict) -> str:
22+
cols = header.split(",")
23+
return ",".join(str(values.get(col, "")) for col in cols)
24+
2225
def setUp(self):
2326
with open(schemaFilePath) as JSON:
2427
SchemaFile = json.load(JSON)
2528
self.validator = Validator(SchemaFile)
2629

2730
def test_run_validation_csv_row_success(self):
28-
good_row = (
29-
"202223,202223,Spring term,Local authority,E92000001,England,E12000004,"
30-
"East Midlands,E06000016,Leicester,856,Primary,66,23057,2367094,"
31-
"2380687,13593,166808,99826,66982,34090,2547495,1157575,1180365,2337940,29154"
32-
)
31+
values = {
32+
"NHS_NUMBER": "9000000009",
33+
"PERSON_FORENAME": "JOHN",
34+
"PERSON_SURNAME": "DOE",
35+
"SITE_CODE": "RJ1",
36+
"PERFORMING_PROFESSIONAL_FORENAME": "ALICE",
37+
"PERFORMING_PROFESSIONAL_SURNAME": "SMITH",
38+
"PRIMARY_SOURCE": "true",
39+
"VACCINATION_PROCEDURE_CODE": "PROC123",
40+
"VACCINATION_PROCEDURE_TERM": "Procedure Term",
41+
"DOSE_SEQUENCE": 1,
42+
"VACCINE_PRODUCT_CODE": "VACC123",
43+
"VACCINE_PRODUCT_TERM": "Vaccine Term",
44+
"VACCINE_MANUFACTURER": "Manufacturer XYZ",
45+
"BATCH_NUMBER": "BATCH001",
46+
}
47+
good_row = self.build_row(CSV_HEADER, values)
3348
error_report = self.validator.validate_csv_row(good_row, CSV_HEADER, True, True, True)
34-
self.assertTrue(error_report == [])
49+
self.assertEqual(error_report, [])
3550

3651
def test_run_validation_csv_row_failure(self):
37-
# empty time_period
38-
bad_row = (
39-
"202223,,Spring term,Local authority,E92000001,England,E12000004,"
40-
"East Midlands,E06000016,Leicester,856,Primary,66,23057,2367094,"
41-
"2380687,13593,166808,99826,66982,34090,2547495,1157575,1180365,2337940,29154"
42-
)
52+
# With fieldNameFlat used for CSV, empty NHS_NUMBER should fail the NOTEMPTY check
53+
values = {
54+
"NHS_NUMBER": "",
55+
"PERSON_FORENAME": "JOHN",
56+
"PERSON_SURNAME": "DOE",
57+
"SITE_CODE": "RJ1",
58+
"PERFORMING_PROFESSIONAL_FORENAME": "ALICE",
59+
"PERFORMING_PROFESSIONAL_SURNAME": "SMITH",
60+
"PRIMARY_SOURCE": "true",
61+
"VACCINATION_PROCEDURE_CODE": "PROC123",
62+
"VACCINATION_PROCEDURE_TERM": "Procedure Term",
63+
"DOSE_SEQUENCE": 1,
64+
"VACCINE_PRODUCT_CODE": "VACC123",
65+
"VACCINE_PRODUCT_TERM": "Vaccine Term",
66+
"VACCINE_MANUFACTURER": "Manufacturer XYZ",
67+
"BATCH_NUMBER": "BATCH001",
68+
}
69+
bad_row = self.build_row(CSV_HEADER, values)
4370
error_report = self.validator.validate_csv_row(bad_row, CSV_HEADER, True, True, True)
4471
self.assertTrue(len(error_report) > 0)
45-
error = error_report[0]
46-
self.assertEqual(error.id, "check2")
47-
self.assertEqual(error.message, "Value not empty failure")
48-
self.assertEqual(error.name, "Time Period Not Empty Check")
49-
self.assertEqual(error.details, "Value is empty, not as expected")
72+
# Assert the NHS Number NOTEMPTY error is present
73+
messages = [(e.name, e.message, e.details) for e in error_report]
74+
self.assertIn(
75+
("NHS Number Not Empty Check", "Value not empty failure", "Value is empty, not as expected"), messages
76+
)

0 commit comments

Comments
 (0)