def test_db_version_raise_not_controlled_error_no_tables(self, mock_vc): with mock.patch.object(sqlalchemy, 'MetaData') as mock_meta: self.mock_api_db_version.side_effect = ( migrate_exception.DatabaseNotControlledError('oups'), self.init_version) my_meta = mock.MagicMock() my_meta.tables = {} mock_meta.return_value = my_meta upgrades._migrate_db_version(self.engine, self.path, self.init_version) mock_vc.assert_called_once_with(self.engine, self.return_value1, self.init_version)
def test_db_version_raise_not_controlled_migrate_tables(self, mock_vc): # When there are tables but the sqlalchemy-migrate control table # (migrate_version) is present, attempt to version the db. # This simulates the case where there is are multiple repos (different # abs_paths) and a different path has been versioned already. with mock.patch.object(sqlalchemy, 'MetaData') as mock_meta: self.mock_api_db_version.side_effect = [ migrate_exception.DatabaseNotControlledError('oups'), None ] my_meta = mock.MagicMock() my_meta.tables = {'migrate_version': 1, 'b': 2} mock_meta.return_value = my_meta upgrades._migrate_db_version(self.engine, self.path, self.init_version) mock_vc.assert_called_once_with(self.engine, self.return_value1, self.init_version)
def test_db_version_raise_not_controlled_error_first(self): with mock.patch.object( upgrades, '_migrate_db_version_control', ) as mock_ver: self.mock_api_db_version.side_effect = [ migrate_exception.DatabaseNotControlledError('oups'), self.test_version ] ret_val = upgrades._migrate_db_version(self.engine, self.path, self.init_version) self.assertEqual(self.test_version, ret_val) mock_ver.assert_called_once_with(self.engine, self.path, version=self.init_version)
def version(self): with sql.session_for_read() as session: return upgrades._migrate_db_version( session.get_bind(), self.repo_path, self.min_version, )
def test_db_version_return(self): ret_val = upgrades._migrate_db_version(self.engine, self.path, self.init_version) self.assertEqual(self.test_version, ret_val)