diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-12-27 17:10:55 -0500 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-12-27 17:10:55 -0500 |
commit | de786a4208e621229769a8fb1f876f358dc4e70e (patch) | |
tree | 88b3900b32adbb63e832180f290975a1fc9e9b57 /test/ext/declarative/test_basic.py | |
parent | f50c670e47bb562ee23b52f56a8d469f7f946f89 (diff) | |
download | sqlalchemy-de786a4208e621229769a8fb1f876f358dc4e70e.tar.gz |
- Declarative does an extra check to detect if the same
:class:`.Column` is mapped multiple times under different properties
(which typically should be a :func:`.synonym` instead) or if two
or more :class:`.Column` objects are given the same name, raising
a warning if this condition is detected. [ticket:2828]
Diffstat (limited to 'test/ext/declarative/test_basic.py')
-rw-r--r-- | test/ext/declarative/test_basic.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/ext/declarative/test_basic.py b/test/ext/declarative/test_basic.py index b119e356f..0d213fce3 100644 --- a/test/ext/declarative/test_basic.py +++ b/test/ext/declarative/test_basic.py @@ -143,6 +143,39 @@ class DeclarativeTest(DeclarativeTestBase): assert class_mapper(Bar).get_property('some_data').columns[0] \ is t.c.data + def test_column_named_twice(self): + def go(): + class Foo(Base): + __tablename__ = 'foo' + + id = Column(Integer, primary_key=True) + x = Column('x', Integer) + y = Column('x', Integer) + assert_raises_message( + sa.exc.SAWarning, + "On class 'Foo', Column object 'x' named directly multiple times, " + "only one will be used: x, y", + go + ) + + + def test_column_repeated_under_prop(self): + def go(): + class Foo(Base): + __tablename__ = 'foo' + + id = Column(Integer, primary_key=True) + x = Column('x', Integer) + y = column_property(x) + z = Column('x', Integer) + + assert_raises_message( + sa.exc.SAWarning, + "On class 'Foo', Column object 'x' named directly multiple times, " + "only one will be used: x, y, z", + go + ) + def test_relationship_level_msg_for_invalid_callable(self): class A(Base): __tablename__ = 'a' |