diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-08-27 16:04:16 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2012-08-27 16:04:16 -0400 |
| commit | 640625bc9e98dd4060a1e61c717ddc98f8b3808b (patch) | |
| tree | 8c8e19184af6c70ccc382d4f86111dae8c3ffdfe /test/ext/declarative/test_basic.py | |
| parent | 326f2e4f60744d8073eaa4eda69d1dbb46bc9f50 (diff) | |
| download | sqlalchemy-640625bc9e98dd4060a1e61c717ddc98f8b3808b.tar.gz | |
- [feature] Conflicts between columns on
single-inheritance declarative subclasses,
with or without using a mixin, can be resolved
using a new @declared_attr usage described
in the documentation. [ticket:2472]
Diffstat (limited to 'test/ext/declarative/test_basic.py')
| -rw-r--r-- | test/ext/declarative/test_basic.py | 36 |
1 files changed, 17 insertions, 19 deletions
diff --git a/test/ext/declarative/test_basic.py b/test/ext/declarative/test_basic.py index 2d6534942..5af2b88dc 100644 --- a/test/ext/declarative/test_basic.py +++ b/test/ext/declarative/test_basic.py @@ -897,26 +897,24 @@ class DeclarativeTest(DeclarativeTestBase): eq_(sess.query(User).all(), [User(name='u1', address_count=2, addresses=[Address(email='one'), Address(email='two')])]) - def test_useless_declared_attr_warns_on_subclass(self): - def go(): - class MyBase(Base): - __tablename__ = 'foo' - id = Column(Integer, primary_key=True) - @declared_attr - def somecol(cls): - return Column(Integer) + def test_declared_on_base_class(self): + class MyBase(Base): + __tablename__ = 'foo' + id = Column(Integer, primary_key=True) + @declared_attr + def somecol(cls): + return Column(Integer) - class MyClass(MyBase): - __tablename__ = 'bar' - assert_raises_message( - sa.exc.SAWarning, - r"Regular \(i.e. not __special__\) attribute 'MyBase.somecol' " - "uses @declared_attr, but owning class " - "<class 'test.ext.declarative..*test_basic..*MyBase'> is " - "mapped - not applying to subclass <class " - "'test.ext.declarative..*test_basic..*MyClass'>.", - go - ) + class MyClass(MyBase): + __tablename__ = 'bar' + id = Column(Integer, ForeignKey('foo.id'), primary_key=True) + + # previously, the 'somecol' declared_attr would be ignored + # by the mapping and would remain unused. now we take + # it as part of MyBase. + + assert 'somecol' in MyBase.__table__.c + assert 'somecol' not in MyClass.__table__.c def test_column(self): |
