@@ -20,60 +20,78 @@ def setUp(self):
20
20
21
21
def test_trimmed_fields (self ):
22
22
"""Test that all string fields in each university entry are properly trimmed"""
23
- for university in self .valid_json :
23
+ errors = []
24
+
25
+ for i , university in enumerate (self .valid_json ):
24
26
# Check university name
25
27
if isinstance (university ["name" ], str ):
26
- self .assertEqual (
27
- university ["name" ],
28
- university ["name" ].strip (),
29
- msg = f"University Name contains leading/trailing whitespace: '{ university ['name' ]} '" ,
30
- )
28
+ original_name = university ["name" ]
29
+ trimmed_name = original_name .strip ()
30
+ if original_name != trimmed_name :
31
+ errors .append (
32
+ f"Entry { i } : University Name contains leading/trailing whitespace: '{ original_name } ' -> should be '{ trimmed_name } '"
33
+ )
31
34
32
35
# Check domains
33
36
if university ["domains" ] is not None :
34
- for domain in university ["domains" ]:
37
+ for j , domain in enumerate ( university ["domains" ]) :
35
38
if isinstance (domain , str ):
36
- self .assertEqual (
37
- domain ,
38
- domain .strip (),
39
- msg = f"Domain contains leading/trailing whitespace: '{ domain } '" ,
40
- )
39
+ original_domain = domain
40
+ trimmed_domain = original_domain .strip ()
41
+ if original_domain != trimmed_domain :
42
+ errors .append (
43
+ f"Entry { i } : Domain { j } contains leading/trailing whitespace: '{ original_domain } ' -> should be '{ trimmed_domain } '"
44
+ )
41
45
42
46
# Check web_pages
43
47
if university ["web_pages" ] is not None :
44
- for web_page in university ["web_pages" ]:
48
+ for j , web_page in enumerate ( university ["web_pages" ]) :
45
49
if isinstance (web_page , str ):
46
- self .assertEqual (
47
- web_page ,
48
- web_page .strip (),
49
- msg = f"Web page contains leading/trailing whitespace: '{ web_page } '" ,
50
- )
50
+ original_web_page = web_page
51
+ trimmed_web_page = original_web_page .strip ()
52
+ if original_web_page != trimmed_web_page :
53
+ errors .append (
54
+ f"Entry { i } : Web page { j } contains leading/trailing whitespace: '{ original_web_page } ' -> should be '{ trimmed_web_page } '"
55
+ )
51
56
52
57
# Check country
53
58
if isinstance (university ["country" ], str ):
54
- self .assertEqual (
55
- university ["country" ],
56
- university ["country" ].strip (),
57
- msg = f"Country contains leading/trailing whitespace: '{ university ['country' ]} '" ,
58
- )
59
+ original_country = university ["country" ]
60
+ trimmed_country = original_country .strip ()
61
+ if original_country != trimmed_country :
62
+ errors .append (
63
+ f"Entry { i } : Country contains leading/trailing whitespace: '{ original_country } ' -> should be '{ trimmed_country } '"
64
+ )
59
65
60
66
# Check alpha_two_code
61
67
if isinstance (university ["alpha_two_code" ], str ):
62
- self .assertEqual (
63
- university ["alpha_two_code" ],
64
- university ["alpha_two_code" ].strip (),
65
- msg = f"Alpha two code contains leading/trailing whitespace: '{ university ['alpha_two_code' ]} '" ,
66
- )
68
+ original_alpha = university ["alpha_two_code" ]
69
+ trimmed_alpha = original_alpha .strip ()
70
+ if original_alpha != trimmed_alpha :
71
+ errors .append (
72
+ f"Entry { i } : Alpha two code contains leading/trailing whitespace: '{ original_alpha } ' -> should be '{ trimmed_alpha } '"
73
+ )
67
74
68
75
# Check state-province
69
76
if isinstance (university ["state-province" ], str ):
70
- self .assertEqual (
71
- university ["state-province" ],
72
- university ["state-province" ].strip (),
73
- msg = f"State/Province contains leading/trailing whitespace: '{ university ['state-province' ]} '" ,
74
- )
77
+ original_state = university ["state-province" ]
78
+ trimmed_state = original_state .strip ()
79
+ if original_state != trimmed_state :
80
+ errors .append (
81
+ f"Entry { i } : State/Province contains leading/trailing whitespace: '{ original_state } ' -> should be '{ trimmed_state } '"
82
+ )
83
+
84
+ # If there are any errors, fail the test with all error messages
85
+ if errors :
86
+ error_message = (
87
+ f"Found { len (errors )} fields with whitespace issues:\n "
88
+ + "\n " .join (errors [:10 ])
89
+ ) # Show first 10 errors
90
+ if len (errors ) > 10 :
91
+ error_message += f"\n ... and { len (errors ) - 10 } more errors"
92
+ self .fail (error_message )
75
93
76
94
77
95
# Run tests locally
78
- # if __name__ == "__main__":
79
- # unittest.main()
96
+ if __name__ == "__main__" :
97
+ unittest .main ()
0 commit comments