diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-06-09 08:55:14 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-06-09 08:55:14 -0400 |
| commit | 6f93f88b5ee683141c81ecd434a4c0818e08dbd9 (patch) | |
| tree | 6433e4bf65fa288d906754792a3e8252a6ab95f4 /test | |
| parent | e1935b1711dd10d1cb30e3990fef2dd2e0435f1f (diff) | |
| download | sqlalchemy-6f93f88b5ee683141c81ecd434a4c0818e08dbd9.tar.gz | |
handle non-mapped mixins for with_loader_criteria reduce
special handling is needed for a with_loader_criteria()
against a non-mapped mixin class. added that to test
coverage
Fixes: #8109
Change-Id: Ia599361c8faab008e92095eb4607d02820f590d5
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/test_pickled.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/test/orm/test_pickled.py b/test/orm/test_pickled.py index fa3fbfa2c..a0706a133 100644 --- a/test/orm/test_pickled.py +++ b/test/orm/test_pickled.py @@ -24,10 +24,12 @@ from sqlalchemy.testing import eq_ from sqlalchemy.testing import fixtures from sqlalchemy.testing.fixtures import fixture_session from sqlalchemy.testing.pickleable import Address +from sqlalchemy.testing.pickleable import AddressWMixin from sqlalchemy.testing.pickleable import Child1 from sqlalchemy.testing.pickleable import Child2 from sqlalchemy.testing.pickleable import Dingaling from sqlalchemy.testing.pickleable import EmailUser +from sqlalchemy.testing.pickleable import Mixin from sqlalchemy.testing.pickleable import Order from sqlalchemy.testing.pickleable import Parent from sqlalchemy.testing.pickleable import Screen @@ -328,23 +330,27 @@ class PickleTest(fixtures.MappedTest): eq_(len(u2.addresses), 2) @testing.combinations(True, False, argnames="pickle_it") - def test_loader_criteria(self, pickle_it): + @testing.combinations(True, False, argnames="use_mixin") + def test_loader_criteria(self, pickle_it, use_mixin): """test #8109""" users, addresses = (self.tables.users, self.tables.addresses) + AddressCls = AddressWMixin if use_mixin else Address + self.mapper_registry.map_imperatively( User, users, - properties={"addresses": relationship(Address)}, + properties={"addresses": relationship(AddressCls)}, ) - self.mapper_registry.map_imperatively(Address, addresses) + + self.mapper_registry.map_imperatively(AddressCls, addresses) with fixture_session(expire_on_commit=False) as sess: u1 = User(name="ed") u1.addresses = [ - Address(email_address="ed@bar.com"), - Address(email_address="ed@foo.com"), + AddressCls(email_address="ed@bar.com"), + AddressCls(email_address="ed@foo.com"), ] sess.add(u1) sess.commit() @@ -353,8 +359,9 @@ class PickleTest(fixtures.MappedTest): # note that non-lambda is not picklable right now as # SQL expressions usually can't be pickled. opt = with_loader_criteria( - Address, + Mixin if use_mixin else Address, no_ed_foo, + include_aliases=True, ) u1 = sess.query(User).options(opt).first() |
