def test_add_fk_after_add_column(self): exist_meta = sqlalchemy.MetaData() sqlalchemy.Table('a', exist_meta, sqlalchemy.Column('id', sqlalchemy.Integer)) sqlalchemy.Table('b', exist_meta, sqlalchemy.Column('id', sqlalchemy.Integer)) model_meta = sqlalchemy.MetaData() sqlalchemy.Table('a', model_meta, sqlalchemy.Column('id', sqlalchemy.Integer)) column = sqlalchemy.Column('a_id', sqlalchemy.Integer, sqlalchemy.ForeignKey('a.id')) table = sqlalchemy.Table('b', model_meta, sqlalchemy.Column('id', sqlalchemy.Integer), column) fkc = sqlalchemy.ForeignKeyConstraint(['a_id'], ['a.id'], table=table) addcolumn = sa_migration.AddColumn('b', column, desired_phase='migrate') addfk = sa_migration.AddForeignKey(fkc) scheduler = sa_migration.Scheduler() scheduler.add(addfk) scheduler.add(addcolumn) expand, migrate, contract = scheduler.schedule() self.assertEqual([], expand) self.assertEqual([addcolumn, addfk], migrate) self.assertEqual([], contract)
def test_remove_index_after_add(self): exist_meta = sqlalchemy.MetaData() oldtbl = sqlalchemy.Table('a', exist_meta, sqlalchemy.Column('id', sqlalchemy.Integer), sqlalchemy.Column('foo', sqlalchemy.Integer)) model_meta = sqlalchemy.MetaData() newtbl = sqlalchemy.Table('a', model_meta, sqlalchemy.Column('id', sqlalchemy.Integer)) old_index = sqlalchemy.Index('a_id_idx', oldtbl.c.id, oldtbl.c.foo) new_index = sqlalchemy.Index('a_id_idx', newtbl.c.id) dropidx = sa_migration.DropIndex(old_index) addidx = sa_migration.AddIndex(new_index, {}) scheduler = sa_migration.Scheduler() scheduler.add(addidx) scheduler.add(dropidx) expand, migrate, contract = scheduler.schedule() self.assertEqual([], expand) self.assertEqual([dropidx, addidx], migrate) self.assertEqual([], contract)