diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-10-21 17:58:51 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-10-21 17:58:51 -0400 |
| commit | 56d5732fbdf09508784df6dc4c04e5b39ac6be85 (patch) | |
| tree | 0f69a2bfea355cac186dcc44847f8e49ace213cd /test/sql | |
| parent | 0ae140aa989ea3868c01af23adfcdcc79b7cb22e (diff) | |
| download | sqlalchemy-56d5732fbdf09508784df6dc4c04e5b39ac6be85.tar.gz | |
- changelog for pullreq github:139
- add support for self-referential foreign keys to move over as well when
the table name is changed.
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_metadata.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 2328e7f73..3c55242fd 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -722,6 +722,42 @@ class ToMetaDataTest(fixtures.TestBase, ComparesTables): eq_((table.key, table2.key), ('myschema.mytable', 'myschema.newtable')) + def test_change_name_selfref_fk_moves(self): + meta = MetaData() + + referenced = Table('ref', meta, + Column('id', Integer, primary_key=True), + ) + table = Table('mytable', meta, + Column('id', Integer, primary_key=True), + Column('parent_id', ForeignKey('mytable.id')), + Column('ref_id', ForeignKey('ref.id')) + ) + + table2 = table.tometadata(table.metadata, name='newtable') + assert table.metadata is table2.metadata + assert table2.c.ref_id.references(referenced.c.id) + assert table2.c.parent_id.references(table2.c.id) + + def test_change_name_selfref_fk_moves_w_schema(self): + meta = MetaData() + + referenced = Table('ref', meta, + Column('id', Integer, primary_key=True), + ) + table = Table('mytable', meta, + Column('id', Integer, primary_key=True), + Column('parent_id', ForeignKey('mytable.id')), + Column('ref_id', ForeignKey('ref.id')) + ) + + table2 = table.tometadata( + table.metadata, name='newtable', schema='newschema') + ref2 = referenced.tometadata(table.metadata, schema='newschema') + assert table.metadata is table2.metadata + assert table2.c.ref_id.references(ref2.c.id) + assert table2.c.parent_id.references(table2.c.id) + def _assert_fk(self, t2, schema, expected, referred_schema_fn=None): m2 = MetaData() existing_schema = t2.schema |
