@@ -38,16 +38,19 @@ def setUp(self):
3838 password = 'bar' )
3939
4040 def assertCSVRowValue (self , csv_file , row_index , headers_and_values ):
41- csvreader = csv . reader ( csv_file , delimiter = b"," )
42- rows = list ( csvreader )
41+ # decode bytes object into string list required by the csv reader
42+ str_rows = [ line . decode ( 'utf-8' ) for line in csv_file ]
4343
4444 # strip the BOM out
45- rows [0 ][ 0 ] = rows [0 ][0 ][ 3 :]
45+ str_rows [0 ] = str_rows [0 ][1 :]
4646
47- self .assertTrue (len (rows ) > 1 )
47+ csvreader = csv .reader (str_rows , delimiter = "," )
48+ reader_rows = list (csvreader )
49+
50+ self .assertTrue (len (reader_rows ) > 1 )
4851 for (header , value ) in headers_and_values .items ():
49- target_column = rows [0 ].index (header )
50- self .assertEqual (value , rows [row_index ][target_column ])
52+ target_column = reader_rows [0 ].index (header )
53+ self .assertEqual (value , reader_rows [row_index ][target_column ])
5154
5255 def assertTaskProducesCSV (self , user , model , assert_fields_and_values ):
5356 self ._assertTaskProducesCSVBase (user , model , assert_fields_and_values )
@@ -82,6 +85,7 @@ def assertPsuedoAsyncTaskWorks(self, model,
8285
8386 job_id = ctx ['job_id' ]
8487 job = ExportJob .objects .get (pk = job_id )
88+
8589 self .assertCSVRowValue (job .outfile , 1 ,
8690 {assertion_field : assertion_value })
8791
@@ -213,16 +217,20 @@ class UserExportsTest(UserExportsTestCase):
213217
214218 def get_csv_data_with_base_assertions (self ):
215219 resp = users_csv (make_request (), self .instance )
216- reader = csv .reader (resp )
217220
218- # Skip BOM and entry line
219- next (reader )
220- next (reader )
221+ # decode bytes object into string list required by the csv reader
222+ str_rows = [line .decode ('utf-8' ) for line in resp ]
221223
224+ # strip the BOM and entry line out
225+ reader = csv .reader (str_rows [2 :])
226+
227+ # grab and strip the header
222228 header = next (reader )
223229
224- data = [dict (list (zip (header , [x .decode ('utf8' ) for x in row ])))
225- for row in reader ]
230+ reader_rows = list (reader )
231+
232+ data = (lambda h = header , rows = reader_rows :
233+ [dict (list (zip (h , [x for x in row ]))) for row in rows ])()
226234
227235 commander , user1data , user2data = data
228236 self .assertEqual (commander ['username' ], self .commander .username )
0 commit comments