def test_write_database(self): data = {u'a': 2, u'b': {u'c': [5, 6]}} devices.write_database(data, self.tempdir) with open(os.path.join(self.tempdir, '.miro', 'json')) as f: new_data = json.load(f) self.assertEqual(data, new_data)
def test_upgrade_error(self): self.open_database() self.make_device_items('foo.mp3', 'bar.mp3') devices.write_database(self.device.database, self.device.mount) # Force our upgrade code to run and throw an exception. os.remove(os.path.join(self.device.mount, '.miro', 'sqlite')) mock_do_import = mock.Mock() method = ('miro.devicedatabaseupgrade.' '_do_import_old_items.convert_old_item') patcher = mock.patch(method, mock_do_import) mock_do_import.side_effect = sqlite3.DatabaseError("Error") self.device.database.created_new = False with patcher: self.open_database() # check that we created a new sqlite database and added new metadata # status rows for the device items cursor = self.device.sqlite_database.cursor cursor.execute("SELECT path FROM metadata_status") paths = [r[0] for r in cursor.fetchall()] self.assertSameSet(paths, ['foo.mp3', 'bar.mp3'])