summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2016-10-04 16:48:08 -0400
committerGerrit Code Review <gerrit2@ln3.zzzcomputing.com>2016-10-04 16:48:08 -0400
commite5a5a72e175d7c6a70d5b2a0399377c7a133cced (patch)
tree237ce104217706b18144dc87a2766a4d8ad0d2fe /test
parentaadbb5a1d1e029aba39b7d17071f2fa240933a88 (diff)
parent95d4cd30420414fcede2662aed87b0f2e5a861d4 (diff)
downloadsqlalchemy-e5a5a72e175d7c6a70d5b2a0399377c7a133cced.tar.gz
Merge "Enhance "raise" strategy to include "raise_on_sql" option"
Diffstat (limited to 'test')
-rw-r--r--test/ext/test_baked.py5
-rw-r--r--test/orm/test_mapper.py57
2 files changed, 59 insertions, 3 deletions
diff --git a/test/ext/test_baked.py b/test/ext/test_baked.py
index 4250e363b..2f501eb6c 100644
--- a/test/ext/test_baked.py
+++ b/test/ext/test_baked.py
@@ -576,7 +576,7 @@ class ResultTest(BakedTest):
Address(id=4, email_address='ed@lala.com'),
]),
User(id=9,
- addresses=[Address(id=5)],
+ addresses=[Address(id=5)],
orders=[Order(id=2), Order(id=4)]),
User(id=10, addresses=[])
]
@@ -728,7 +728,6 @@ class LazyLoaderTest(BakedTest):
def test_systemwide_loaders_loadable_via_lazyloader(self):
from sqlalchemy.orm import configure_mappers
- from sqlalchemy.orm.strategies import LazyLoader
baked.bake_lazy_loaders()
try:
@@ -738,7 +737,7 @@ class LazyLoaderTest(BakedTest):
is_(
User.addresses.property.
- _get_strategy_by_cls(LazyLoader).__class__,
+ _get_strategy((('lazy', 'select'), )).__class__,
BakedLazyLoader
)
finally:
diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py
index 045016bb3..8c4171125 100644
--- a/test/orm/test_mapper.py
+++ b/test/orm/test_mapper.py
@@ -2874,6 +2874,63 @@ class RaiseLoadTest(_fixtures.FixtureTest):
self.sql_count_(0, go)
+ def test_m2o_raise_on_sql_option(self):
+ Address, addresses, users, User = (
+ self.classes.Address,
+ self.tables.addresses,
+ self.tables.users,
+ self.classes.User)
+ mapper(Address, addresses, properties={
+ 'user': relationship(User)
+ })
+ mapper(User, users)
+ s = Session()
+ a1 = s.query(Address).filter_by(id=1).options(
+ sa.orm.raiseload('user', sql_only=True)).first()
+
+ def go():
+ assert_raises_message(
+ sa.exc.InvalidRequestError,
+ "'Address.user' is not available due to lazy='raise_on_sql'",
+ lambda: a1.user)
+
+ self.sql_count_(0, go)
+
+ s.close()
+
+ u1 = s.query(User).first()
+ a1 = s.query(Address).filter_by(id=1).options(
+ sa.orm.raiseload('user', sql_only=True)).first()
+ assert 'user' not in a1.__dict__
+ is_(a1.user, u1)
+
+ def test_m2o_non_use_get_raise_on_sql_option(self):
+ Address, addresses, users, User = (
+ self.classes.Address,
+ self.tables.addresses,
+ self.tables.users,
+ self.classes.User)
+ mapper(Address, addresses, properties={
+ 'user': relationship(
+ User,
+ primaryjoin=sa.and_(
+ addresses.c.user_id == users.c.id ,
+ users.c.name != None
+ )
+ )
+ })
+ mapper(User, users)
+ s = Session()
+ u1 = s.query(User).first()
+ a1 = s.query(Address).filter_by(id=1).options(
+ sa.orm.raiseload('user', sql_only=True)).first()
+
+ def go():
+ assert_raises_message(
+ sa.exc.InvalidRequestError,
+ "'Address.user' is not available due to lazy='raise_on_sql'",
+ lambda: a1.user)
+
class RequirementsTest(fixtures.MappedTest):