Skip to content

Commit 6a696cb

Browse files
Update test_unit.py
1 parent 7716bfe commit 6a696cb

File tree

1 file changed

+52
-22
lines changed

1 file changed

+52
-22
lines changed

tests/test_unit.py

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,19 @@
99
VALID_DATACITE43_DIR = "../tests/data/datacite43/"
1010
INVALID_DATACITE43_DIR = "../tests/data/invalid_datacite43/"
1111

12+
1213
# Function to get all JSON files in the directory
1314
def get_all_json_files(directory):
14-
return [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith('.json')]
15+
return [
16+
os.path.join(directory, f) for f in os.listdir(directory) if f.endswith(".json")
17+
]
18+
1519

1620
# Get list of all valid JSON files in the directory
1721
VALID_DATACITE43_FILES = get_all_json_files(VALID_DATACITE43_DIR)
1822
INVALID_DATACITE43_FILES = get_all_json_files(INVALID_DATACITE43_DIR)
1923

24+
2025
@pytest.mark.parametrize("valid_file", VALID_DATACITE43_FILES)
2126
def test_valid_json(valid_file):
2227
"""Test that valid example files validate successfully."""
@@ -27,12 +32,13 @@ def test_valid_json(valid_file):
2732
validation_errors = validator43(json_data)
2833
except ValueError as e:
2934
pytest.fail(f"Validation failed for: {valid_file}\nErrors: {str(e)}")
30-
35+
3136
if validation_errors:
3237
pytest.fail(f"Validation failed for: {valid_file}\nErrors: {validation_errors}")
3338
else:
3439
print(f"Validation passed for: {valid_file}")
3540

41+
3642
@pytest.mark.parametrize("invalid_file", INVALID_DATACITE43_FILES)
3743
def test_invalid_json(invalid_file):
3844
"""Test that invalid example files do not validate successfully."""
@@ -44,48 +50,70 @@ def test_invalid_json(invalid_file):
4450
except ValueError:
4551
print(f"Validation failed as expected for: {invalid_file}")
4652
return # Test passes if validation raises a ValueError
47-
53+
4854
if validation_errors:
4955
print(f"Validation failed as expected for: {invalid_file}")
5056
else:
5157
pytest.fail(f"Validation passed unexpectedly for: {invalid_file}")
5258

53-
@pytest.mark.parametrize("missing_field_file", [
54-
{"file": "../tests/data/missing_creators.json", "missing_field": "creators"},
55-
{"file": "../tests/data/missing_titles.json", "missing_field": "titles"},
56-
])
59+
60+
@pytest.mark.parametrize(
61+
"missing_field_file",
62+
[
63+
{"file": "../tests/data/missing_creators.json", "missing_field": "creators"},
64+
{"file": "../tests/data/missing_titles.json", "missing_field": "titles"},
65+
],
66+
)
5767
def test_missing_required_fields(missing_field_file):
5868
"""Test that JSON files missing required fields fail validation."""
59-
print(f"\nTesting missing field: {missing_field_file['missing_field']} in file: {missing_field_file['file']}")
60-
json_data = load_json_path(missing_field_file['file'])
61-
with pytest.raises(ValueError, match=f"Missing required metadata field: {missing_field_file['missing_field']}"):
69+
print(
70+
f"\nTesting missing field: {missing_field_file['missing_field']} in file: {missing_field_file['file']}"
71+
)
72+
json_data = load_json_path(missing_field_file["file"])
73+
with pytest.raises(
74+
ValueError,
75+
match=f"Missing required metadata field: {missing_field_file['missing_field']}",
76+
):
6277
validator43(json_data)
6378

64-
@pytest.mark.parametrize("type_error_file", [
65-
{"file": "../tests/data/type_error_creators.json", "field": "creators"},
66-
{"file": "../tests/data/type_error_dates.json", "field": "dates"},
67-
])
79+
80+
@pytest.mark.parametrize(
81+
"type_error_file",
82+
[
83+
{"file": "../tests/data/type_error_creators.json", "field": "creators"},
84+
{"file": "../tests/data/type_error_dates.json", "field": "dates"},
85+
],
86+
)
6887
def test_incorrect_field_types(type_error_file):
6988
"""Test that JSON files with incorrect field types fail validation."""
70-
print(f"\nTesting incorrect type in field: {type_error_file['field']} for file: {type_error_file['file']}")
71-
json_data = load_json_path(type_error_file['file'])
72-
with pytest.raises(ValueError, match=f"Incorrect type for field: {type_error_file['field']}"):
89+
print(
90+
f"\nTesting incorrect type in field: {type_error_file['field']} for file: {type_error_file['file']}"
91+
)
92+
json_data = load_json_path(type_error_file["file"])
93+
with pytest.raises(
94+
ValueError, match=f"Incorrect type for field: {type_error_file['field']}"
95+
):
7396
validator43(json_data)
7497

98+
7599
def test_multiple_errors():
76100
"""Test JSON file with multiple issues to check all errors are raised."""
77101
json_data = load_json_path("../tests/data/multiple_errors.json")
78102
with pytest.raises(ValueError, match="Multiple validation errors"):
79103
validator43(json_data)
80104

105+
81106
def test_error_logging(caplog):
82107
"""Test that errors are logged correctly during validation."""
83-
json_data = load_json_path("../tests/data/invalid_datacite43/some_invalid_file.json")
108+
json_data = load_json_path(
109+
"../tests/data/invalid_datacite43/some_invalid_file.json"
110+
)
84111
with caplog.at_level(logging.ERROR):
85112
with pytest.raises(ValueError):
86113
validator43(json_data)
87114
assert "Validation failed" in caplog.text
88115

116+
89117
if __name__ == "__main__":
90118
# Manual test runner for valid files
91119
failed_valid_files = []
@@ -96,14 +124,14 @@ def test_error_logging(caplog):
96124
except AssertionError as e:
97125
failed_valid_files.append(file)
98126
print(f"Error occurred in valid file: {file}\nError details: {e}")
99-
127+
100128
if not failed_valid_files:
101129
print("\n✅ All valid files passed validation. Test complete.")
102130
else:
103131
print("\n❌ The following valid files failed validation:")
104132
for failed_file in failed_valid_files:
105133
print(f"- {failed_file}")
106-
134+
107135
# Manual test runner for invalid files
108136
passed_invalid_files = []
109137
print("\nRunning validation for invalid files...")
@@ -113,9 +141,11 @@ def test_error_logging(caplog):
113141
except AssertionError as e:
114142
passed_invalid_files.append(file)
115143
print(f"Error occurred in invalid file: {file}\nError details: {e}")
116-
144+
117145
if not passed_invalid_files:
118-
print("\n✅ All invalid files failed validation as expected. Test is a success.")
146+
print(
147+
"\n✅ All invalid files failed validation as expected. Test is a success."
148+
)
119149
else:
120150
print("\n❌ The following invalid files unexpectedly passed validation:")
121151
for passed_file in passed_invalid_files:

0 commit comments

Comments
 (0)