diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2022-03-24 21:30:52 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2022-03-24 21:30:52 +0000 |
| commit | 221aff778e1eb3c3aa8f8a1f72629177442694bc (patch) | |
| tree | 5f668dd290cce756f4bfc1e60a0ec3c59b0951c8 /test/sql | |
| parent | 1c1c925fe3a77581f4879f6b6fe0bb6b6158cc3d (diff) | |
| parent | 6f02d5edd88fe2475629438b0730181a2b00c5fe (diff) | |
| download | sqlalchemy-221aff778e1eb3c3aa8f8a1f72629177442694bc.tar.gz | |
Merge "pep484 - SQL internals" into main
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_defaults.py | 3 | ||||
| -rw-r--r-- | test/sql/test_metadata.py | 45 |
2 files changed, 46 insertions, 2 deletions
diff --git a/test/sql/test_defaults.py b/test/sql/test_defaults.py index f3260f272..52c779969 100644 --- a/test/sql/test_defaults.py +++ b/test/sql/test_defaults.py @@ -354,7 +354,8 @@ class DefaultObjectTest(fixtures.TestBase): assert_raises_message( sa.exc.ArgumentError, r"SQL expression for WHERE/HAVING role expected, " - r"got (?:Sequence|ColumnDefault|DefaultClause)\('y'.*\)", + r"got (?:Sequence|(?:ScalarElement)ColumnDefault|" + r"DefaultClause)\('y'.*\)", t.select().where, const, ) diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 11c3e83b7..21fc0a627 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -760,7 +760,10 @@ class MetaDataTest(fixtures.TestBase, ComparesTables): "%s" ", name='someconstraint')" % repr(ck.sqltext), ), - (ColumnDefault(("foo", "bar")), "ColumnDefault(('foo', 'bar'))"), + ( + ColumnDefault(("foo", "bar")), + "ScalarElementColumnDefault(('foo', 'bar'))", + ), ): eq_(repr(const), exp) @@ -916,6 +919,46 @@ class ToMetaDataTest(fixtures.TestBase, AssertsCompiledSQL, ComparesTables): a2 = a.to_metadata(m2) assert b2.c.y.references(a2.c.x) + def test_fk_w_no_colname(self): + """test a ForeignKey that refers to table name only. the column + name is assumed to be the same col name on parent table. + + this is a little used feature from long ago that nonetheless is + still in the code. + + The feature was found to be not working but is repaired for + SQLAlchemy 2.0. + + """ + m1 = MetaData() + a = Table("a", m1, Column("x", Integer)) + b = Table("b", m1, Column("x", Integer, ForeignKey("a"))) + assert b.c.x.references(a.c.x) + + m2 = MetaData() + b2 = b.to_metadata(m2) + a2 = a.to_metadata(m2) + assert b2.c.x.references(a2.c.x) + + def test_fk_w_no_colname_name_missing(self): + """test a ForeignKey that refers to table name only. the column + name is assumed to be the same col name on parent table. + + this is a little used feature from long ago that nonetheless is + still in the code. + + """ + m1 = MetaData() + a = Table("a", m1, Column("x", Integer)) + b = Table("b", m1, Column("y", Integer, ForeignKey("a"))) + + with expect_raises_message( + exc.NoReferencedColumnError, + "Could not initialize target column for ForeignKey 'a' on " + "table 'b': table 'a' has no column named 'y'", + ): + assert b.c.y.references(a.c.x) + def test_column_collection_constraint_w_ad_hoc_columns(self): """Test ColumnCollectionConstraint that has columns that aren't part of the Table. |
