summaryrefslogtreecommitdiff
path: root/test/orm/inheritance/test_with_poly.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/inheritance/test_with_poly.py')
-rw-r--r--test/orm/inheritance/test_with_poly.py165
1 files changed, 106 insertions, 59 deletions
diff --git a/test/orm/inheritance/test_with_poly.py b/test/orm/inheritance/test_with_poly.py
index fb6b5a881..014eb1534 100644
--- a/test/orm/inheritance/test_with_poly.py
+++ b/test/orm/inheritance/test_with_poly.py
@@ -1,8 +1,19 @@
from sqlalchemy import Integer, String, ForeignKey, func, desc, and_, or_
-from sqlalchemy.orm import interfaces, relationship, mapper, \
- clear_mappers, create_session, joinedload, joinedload_all, \
- subqueryload, subqueryload_all, polymorphic_union, aliased,\
- class_mapper, with_polymorphic
+from sqlalchemy.orm import (
+ interfaces,
+ relationship,
+ mapper,
+ clear_mappers,
+ create_session,
+ joinedload,
+ joinedload_all,
+ subqueryload,
+ subqueryload_all,
+ polymorphic_union,
+ aliased,
+ class_mapper,
+ with_polymorphic,
+)
from sqlalchemy import exc as sa_exc
from sqlalchemy.engine import default
@@ -11,10 +22,21 @@ from sqlalchemy import testing
from sqlalchemy.testing.schema import Table, Column
from sqlalchemy.testing import assert_raises, eq_
-from ._poly_fixtures import Company, Person, Engineer, Manager, Boss, \
- Machine, Paperwork, _PolymorphicFixtureBase, _Polymorphic,\
- _PolymorphicPolymorphic, _PolymorphicUnions, _PolymorphicJoins,\
- _PolymorphicAliasedJoins
+from ._poly_fixtures import (
+ Company,
+ Person,
+ Engineer,
+ Manager,
+ Boss,
+ Machine,
+ Paperwork,
+ _PolymorphicFixtureBase,
+ _Polymorphic,
+ _PolymorphicPolymorphic,
+ _PolymorphicUnions,
+ _PolymorphicJoins,
+ _PolymorphicAliasedJoins,
+)
class _WithPolymorphicBase(_PolymorphicFixtureBase):
@@ -23,24 +45,33 @@ class _WithPolymorphicBase(_PolymorphicFixtureBase):
pa = with_polymorphic(Person, [Engineer])
def go():
- eq_(sess.query(pa)
- .filter(pa.Engineer.primary_language == 'java').all(),
- self._emps_wo_relationships_fixture()[0:1])
+ eq_(
+ sess.query(pa)
+ .filter(pa.Engineer.primary_language == "java")
+ .all(),
+ self._emps_wo_relationships_fixture()[0:1],
+ )
+
self.assert_sql_count(testing.db, go, 1)
def test_col_expression_base_plus_two_subs(self):
sess = create_session()
pa = with_polymorphic(Person, [Engineer, Manager])
- eq_(sess.query(
- pa.name, pa.Engineer.primary_language,
- pa.Manager.manager_name).filter(
- or_(
- pa.Engineer.primary_language == 'java', pa.Manager.
- manager_name
- == 'dogbert')).order_by(pa.Engineer.type).all(),
- [('dilbert', 'java', None),
- ('dogbert', None, 'dogbert'), ])
+ eq_(
+ sess.query(
+ pa.name, pa.Engineer.primary_language, pa.Manager.manager_name
+ )
+ .filter(
+ or_(
+ pa.Engineer.primary_language == "java",
+ pa.Manager.manager_name == "dogbert",
+ )
+ )
+ .order_by(pa.Engineer.type)
+ .all(),
+ [("dilbert", "java", None), ("dogbert", None, "dogbert")],
+ )
def test_join_to_join_entities(self):
sess = create_session()
@@ -48,24 +79,29 @@ class _WithPolymorphicBase(_PolymorphicFixtureBase):
pa_alias = with_polymorphic(Person, [Engineer], aliased=True)
eq_(
- [(p1.name, type(p1), p2.name, type(p2)) for (p1, p2) in sess.query(
- pa, pa_alias
- ).join(pa_alias,
- or_(
- pa.Engineer.primary_language ==
- pa_alias.Engineer.primary_language,
- and_(
- pa.Engineer.primary_language == None, # noqa
- pa_alias.Engineer.primary_language == None,
- pa.person_id > pa_alias.person_id
- ))
- ).order_by(pa.name, pa_alias.name)],
[
- ('dilbert', Engineer, 'dilbert', Engineer),
- ('dogbert', Manager, 'pointy haired boss', Boss),
- ('vlad', Engineer, 'vlad', Engineer),
- ('wally', Engineer, 'wally', Engineer)
- ]
+ (p1.name, type(p1), p2.name, type(p2))
+ for (p1, p2) in sess.query(pa, pa_alias)
+ .join(
+ pa_alias,
+ or_(
+ pa.Engineer.primary_language
+ == pa_alias.Engineer.primary_language,
+ and_(
+ pa.Engineer.primary_language == None, # noqa
+ pa_alias.Engineer.primary_language == None,
+ pa.person_id > pa_alias.person_id,
+ ),
+ ),
+ )
+ .order_by(pa.name, pa_alias.name)
+ ],
+ [
+ ("dilbert", Engineer, "dilbert", Engineer),
+ ("dogbert", Manager, "pointy haired boss", Boss),
+ ("vlad", Engineer, "vlad", Engineer),
+ ("wally", Engineer, "wally", Engineer),
+ ],
)
def test_join_to_join_columns(self):
@@ -74,25 +110,34 @@ class _WithPolymorphicBase(_PolymorphicFixtureBase):
pa_alias = with_polymorphic(Person, [Engineer], aliased=True)
eq_(
- [row for row in sess.query(
- pa.name, pa.Engineer.primary_language,
- pa_alias.name, pa_alias.Engineer.primary_language
- ).join(pa_alias,
- or_(
- pa.Engineer.primary_language ==
- pa_alias.Engineer.primary_language,
- and_(
- pa.Engineer.primary_language == None, # noqa
- pa_alias.Engineer.primary_language == None,
- pa.person_id > pa_alias.person_id
- ))
- ).order_by(pa.name, pa_alias.name)],
[
- ('dilbert', 'java', 'dilbert', 'java'),
- ('dogbert', None, 'pointy haired boss', None),
- ('vlad', 'cobol', 'vlad', 'cobol'),
- ('wally', 'c++', 'wally', 'c++')
- ]
+ row
+ for row in sess.query(
+ pa.name,
+ pa.Engineer.primary_language,
+ pa_alias.name,
+ pa_alias.Engineer.primary_language,
+ )
+ .join(
+ pa_alias,
+ or_(
+ pa.Engineer.primary_language
+ == pa_alias.Engineer.primary_language,
+ and_(
+ pa.Engineer.primary_language == None, # noqa
+ pa_alias.Engineer.primary_language == None,
+ pa.person_id > pa_alias.person_id,
+ ),
+ ),
+ )
+ .order_by(pa.name, pa_alias.name)
+ ],
+ [
+ ("dilbert", "java", "dilbert", "java"),
+ ("dogbert", None, "pointy haired boss", None),
+ ("vlad", "cobol", "vlad", "cobol"),
+ ("wally", "c++", "wally", "c++"),
+ ],
)
@@ -100,8 +145,9 @@ class PolymorphicTest(_WithPolymorphicBase, _Polymorphic):
pass
-class PolymorphicPolymorphicTest(_WithPolymorphicBase,
- _PolymorphicPolymorphic):
+class PolymorphicPolymorphicTest(
+ _WithPolymorphicBase, _PolymorphicPolymorphic
+):
pass
@@ -109,8 +155,9 @@ class PolymorphicUnionsTest(_WithPolymorphicBase, _PolymorphicUnions):
pass
-class PolymorphicAliasedJoinsTest(_WithPolymorphicBase,
- _PolymorphicAliasedJoins):
+class PolymorphicAliasedJoinsTest(
+ _WithPolymorphicBase, _PolymorphicAliasedJoins
+):
pass