summaryrefslogtreecommitdiff
path: root/test/ext/declarative/test_basic.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2012-08-27 16:04:16 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2012-08-27 16:04:16 -0400
commit640625bc9e98dd4060a1e61c717ddc98f8b3808b (patch)
tree8c8e19184af6c70ccc382d4f86111dae8c3ffdfe /test/ext/declarative/test_basic.py
parent326f2e4f60744d8073eaa4eda69d1dbb46bc9f50 (diff)
downloadsqlalchemy-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.py36
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):