diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2016-10-04 16:48:08 -0400 |
|---|---|---|
| committer | Gerrit Code Review <gerrit2@ln3.zzzcomputing.com> | 2016-10-04 16:48:08 -0400 |
| commit | e5a5a72e175d7c6a70d5b2a0399377c7a133cced (patch) | |
| tree | 237ce104217706b18144dc87a2766a4d8ad0d2fe /test | |
| parent | aadbb5a1d1e029aba39b7d17071f2fa240933a88 (diff) | |
| parent | 95d4cd30420414fcede2662aed87b0f2e5a861d4 (diff) | |
| download | sqlalchemy-e5a5a72e175d7c6a70d5b2a0399377c7a133cced.tar.gz | |
Merge "Enhance "raise" strategy to include "raise_on_sql" option"
Diffstat (limited to 'test')
| -rw-r--r-- | test/ext/test_baked.py | 5 | ||||
| -rw-r--r-- | test/orm/test_mapper.py | 57 |
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): |
