def test_invocation_systemwide_loaders(self): baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture() sess = Session() q = sess.query(User).options(lazyload(User.addresses)) with mock.patch.object(BakedLazyLoader, "_emit_lazyload") as el: u1 = q.first() u1.addresses # invoked is_( el.mock_calls[0][1][1], u1._sa_instance_state ) finally: baked.unbake_lazy_loaders() clear_mappers() User, Address = self._o2m_fixture() sess = Session() q = sess.query(User).options(lazyload(User.addresses)) with mock.patch.object(BakedLazyLoader, "_emit_lazyload") as el: u1 = q.first() u1.addresses # not invoked eq_(el.mock_calls, [])
def test_invocation_systemwide_loaders(self): baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture() sess = Session() q = sess.query(User).options(lazyload(User.addresses)) with mock.patch.object(BakedLazyLoader, "_emit_lazyload") as el: u1 = q.first() u1.addresses # invoked is_(el.mock_calls[0][1][1], u1._sa_instance_state) finally: baked.unbake_lazy_loaders() clear_mappers() User, Address = self._o2m_fixture() sess = Session() q = sess.query(User).options(lazyload(User.addresses)) with mock.patch.object(BakedLazyLoader, "_emit_lazyload") as el: u1 = q.first() u1.addresses # not invoked eq_(el.mock_calls, [])
def _test_baked_lazy_loading_relationship_flag(self, flag): baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture(bake_queries=flag) sess = Session() u1 = sess.query(User).first() from sqlalchemy.orm import Query canary = mock.Mock() # I would think Mock can do this but apparently # it cannot (wrap / autospec don't work together) real_compile_context = Query._compile_context def _my_compile_context(*arg, **kw): if arg[0].column_descriptions[0]['entity'] is Address: canary() return real_compile_context(*arg, **kw) with mock.patch.object(Query, "_compile_context", _my_compile_context): u1.addresses sess.expire(u1) u1.addresses finally: baked.unbake_lazy_loaders() if flag: eq_(canary.call_count, 1) else: eq_(canary.call_count, 2)
def test_systemwide_loaders_loadable_via_lazyloader(self): from sqlalchemy.orm import configure_mappers baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture(lazy='joined') configure_mappers() is_( User.addresses.property._get_strategy( (('lazy', 'select'), )).__class__, BakedLazyLoader) finally: baked.unbake_lazy_loaders()
def test_systemwide_loaders_loadable_via_lazyloader(self): from sqlalchemy.orm import configure_mappers baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture(lazy='joined') configure_mappers() is_( User.addresses.property. _get_strategy((('lazy', 'select'), )).__class__, BakedLazyLoader ) finally: baked.unbake_lazy_loaders()
def _test_baked_lazy_loading_relationship_flag(self, flag): baked.bake_lazy_loaders() try: User, Address = self._o2m_fixture(bake_queries=flag) sess = Session() u1 = sess.query(User).first() from sqlalchemy.orm import Query canary = mock.Mock() # I would think Mock can do this but apparently # it cannot (wrap / autospec don't work together) real_compile_context = Query._compile_context def _my_compile_context(*arg, **kw): if arg[0].column_descriptions[0]['entity'] is Address: canary() return real_compile_context(*arg, **kw) with mock.patch.object( Query, "_compile_context", _my_compile_context ): u1.addresses sess.expire(u1) u1.addresses finally: baked.unbake_lazy_loaders() if flag: eq_(canary.call_count, 1) else: eq_(canary.call_count, 2)