@@ -252,6 +252,48 @@ def test_update_db_with_raw_data_tables(self):
252252
253253 test_database .delete_db ()
254254
255+ def test_update_db_with_raw_extra_data (self ):
256+ current_path = Path (os .path .abspath (__file__ )).parent
257+ db_path = current_path
258+ db_path = db_path .joinpath ("test_databases/extra_info.db" )
259+
260+ # copy the db to a new file
261+ dst_db_path = Path (self ._dbname )
262+ shutil .copy (str (db_path ), str (dst_db_path ))
263+ self .assertTrue (dst_db_path .is_file ())
264+
265+ # sleep to ensure db is ready
266+ time .sleep (0.1 )
267+
268+ # open the new db
269+ test_database = db .Database (db_path = dst_db_path .as_posix (), update = False )
270+
271+ replay_tells = [
272+ row for row in test_database .get_replay_for (1 ) if row .message_type == "tell"
273+ ]
274+
275+ # Make sure that update is required
276+ self .assertTrue (test_database .is_update_required ())
277+
278+ # Update the database
279+ test_database .perform_updates ()
280+
281+ # The trial numbers line up with tells
282+ none_rows = 0
283+ for row in test_database .get_raw_for (1 ):
284+ if row .extra_data is None :
285+ none_rows += 1
286+ else :
287+ self .assertTrue (row .unique_id == row .extra_data ["trial_number" ])
288+ self .assertTrue (row .extra_data ["extra" ] == "info" )
289+
290+ # Exactly one row should be none
291+ self .assertTrue (none_rows == 1 )
292+
293+ self .assertFalse (test_database .is_update_required ())
294+
295+ test_database .delete_db ()
296+
255297 def test_update_configs (self ):
256298 config_str = """
257299 [common]
0 commit comments