summaryrefslogtreecommitdiff
path: root/test/ext/declarative
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-10-06 18:33:05 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-10-06 18:33:05 -0400
commit5a10b6a455f9ad7be752469cbaa503857ae9fda2 (patch)
treeddf0ba53812b4728b297eb4eada616365f90adfb /test/ext/declarative
parent119674dd250d7da8be92a262ad53396c2fac4e0f (diff)
downloadsqlalchemy-5a10b6a455f9ad7be752469cbaa503857ae9fda2.tar.gz
- Fixed "'NoneType' object has no attribute 'concrete'" error
when using :class:`.AbstractConcreteBase` in conjunction with a subclass that declares ``__abstract__``. fixes #3185
Diffstat (limited to 'test/ext/declarative')
-rw-r--r--test/ext/declarative/test_inheritance.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/ext/declarative/test_inheritance.py b/test/ext/declarative/test_inheritance.py
index 5a99c9c5a..6ea37e4d3 100644
--- a/test/ext/declarative/test_inheritance.py
+++ b/test/ext/declarative/test_inheritance.py
@@ -1388,3 +1388,32 @@ class ConcreteExtensionConfigTest(
"WHERE something.id = pjoin.something_id AND something.id = :id_1)"
)
+ def test_abstract_in_hierarchy(self):
+ class Document(Base, AbstractConcreteBase):
+ doctype = Column(String)
+
+ class ContactDocument(Document):
+ __abstract__ = True
+
+ send_method = Column(String)
+
+ class ActualDocument(ContactDocument):
+ __tablename__ = 'actual_documents'
+ __mapper_args__ = {
+ 'concrete': True,
+ 'polymorphic_identity': 'actual'}
+
+ id = Column(Integer, primary_key=True)
+
+ configure_mappers()
+ session = Session()
+ self.assert_compile(
+ session.query(Document),
+ "SELECT pjoin.doctype AS pjoin_doctype, "
+ "pjoin.send_method AS pjoin_send_method, "
+ "pjoin.id AS pjoin_id, pjoin.type AS pjoin_type "
+ "FROM (SELECT actual_documents.doctype AS doctype, "
+ "actual_documents.send_method AS send_method, "
+ "actual_documents.id AS id, 'actual' AS type "
+ "FROM actual_documents) AS pjoin"
+ ) \ No newline at end of file