summaryrefslogtreecommitdiff
path: root/test/orm/inheritance/test_basic.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-02-02 19:03:20 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-02-02 19:03:20 -0500
commit4f1274fc1fc675e2a482b68d658b36597f243c31 (patch)
tree70e27668b28b0ade42d489e7b026e6b9b120ee9d /test/orm/inheritance/test_basic.py
parentc5b4938a9a2918a14397cff3edcee8c69ca249ea (diff)
downloadsqlalchemy-4f1274fc1fc675e2a482b68d658b36597f243c31.tar.gz
- Also emits the correct WHERE criterion
when using single table inheritance. [ticket:2038]
Diffstat (limited to 'test/orm/inheritance/test_basic.py')
-rw-r--r--test/orm/inheritance/test_basic.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/test/orm/inheritance/test_basic.py b/test/orm/inheritance/test_basic.py
index 55cc43993..96c31d516 100644
--- a/test/orm/inheritance/test_basic.py
+++ b/test/orm/inheritance/test_basic.py
@@ -1520,25 +1520,32 @@ class NoPolyIdentInMiddleTest(_base.MappedTest):
@classmethod
def define_tables(cls, metadata):
Table('base', metadata,
- Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
Column('type', String(50), nullable=False),
)
@classmethod
def setup_classes(cls):
- class A(_base.BasicEntity):
+ class A(_base.ComparableEntity):
pass
class B(A):
pass
class C(B):
pass
+ class D(B):
+ pass
+ class E(A):
+ pass
@classmethod
@testing.resolve_artifact_names
def setup_mappers(cls):
mapper(A, base, polymorphic_on=base.c.type)
- mapper(B, inherits=A)
+ mapper(B, inherits=A, )
mapper(C, inherits=B, polymorphic_identity='c')
+ mapper(D, inherits=B, polymorphic_identity='d')
+ mapper(E, inherits=A, polymorphic_identity='e')
@testing.resolve_artifact_names
def test_load_from_middle(self):
@@ -1561,6 +1568,15 @@ class NoPolyIdentInMiddleTest(_base.MappedTest):
assert class_mapper(B).polymorphic_on is base.c.type
assert class_mapper(C).polymorphic_on is base.c.type
+ @testing.resolve_artifact_names
+ def test_load_multiple_from_middle(self):
+ s = Session()
+ s.add_all([C(), D(), E()])
+ eq_(
+ s.query(B).order_by(base.c.type).all(),
+ [C(), D()]
+ )
+
class DeleteOrphanTest(_base.MappedTest):
"""Test the fairly obvious, that an error is raised
when attempting to insert an orphan.