diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-23 12:42:38 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-09-23 12:42:38 -0400 |
| commit | e354dd10f8c3cc19e9cb3a6536f98798ba3538f1 (patch) | |
| tree | 8c3ccd6d23ec99b9370c0992c690ea8fd4cab569 /test/sql/test_metadata.py | |
| parent | 4da34b4cb7eda53fc7c821c6e3c30789de966d04 (diff) | |
| download | sqlalchemy-e354dd10f8c3cc19e9cb3a6536f98798ba3538f1.tar.gz | |
- [feature] An explicit error is raised when
a ForeignKeyConstraint() that was
constructed to refer to multiple remote tables
is first used. [ticket:2455]
Diffstat (limited to 'test/sql/test_metadata.py')
| -rw-r--r-- | test/sql/test_metadata.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 3891f58c6..c7321d7d9 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -1057,6 +1057,34 @@ class ConstraintTest(fixtures.TestBase): assert s1.c.a.references(t1.c.a) assert not s1.c.a.references(t1.c.b) + def test_invalid_composite_fk_check(self): + m = MetaData() + t1 = Table('t1', m, Column('x', Integer), Column('y', Integer), + ForeignKeyConstraint(['x', 'y'], ['t2.x', 't3.y']) + ) + t2 = Table('t2', m, Column('x', Integer)) + t3 = Table('t3', m, Column('y', Integer)) + + assert_raises_message( + exc.ArgumentError, + r"ForeignKeyConstraint on t1\(x, y\) refers to " + "multiple remote tables: t2 and t3", + t1.join, t2 + ) + assert_raises_message( + exc.ArgumentError, + r"ForeignKeyConstraint on t1\(x, y\) refers to " + "multiple remote tables: t2 and t3", + t1.join, t3 + ) + + assert_raises_message( + exc.ArgumentError, + r"ForeignKeyConstraint on t1\(x, y\) refers to " + "multiple remote tables: t2 and t3", + schema.CreateTable(t1).compile + ) + class ColumnDefinitionTest(AssertsCompiledSQL, fixtures.TestBase): """Test Column() construction.""" |
