def test_bound_cache_key_excluded_on_other(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).joinedload(User.orders).joinedload(Order.items) eq_(opt._generate_cache_key(query_path), None)
def test_bound_cache_key_undefer_group(self): User, Address = self.classes('User', 'Address') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).defaultload(User.addresses).undefer_group('xyz') eq_(opt._generate_cache_key(query_path), ((Address, 'column:*', ("undefer_group_xyz", True)), ))
def test_bound_cache_key_included_safe(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "orders"]) opt = Load(User).joinedload(User.orders).joinedload(Order.items) eq_(opt._generate_cache_key(query_path), (((Order, 'items', Item, ('lazy', 'joined')), )))
def test_bound_cache_key_included_unsafe_option_three(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "orders", Order, "items"]) opt = Load(User).joinedload(User.orders).\ joinedload(Order.items.of_type(aliased(SubItem))) eq_(opt._generate_cache_key(query_path), False)
def test_bound_cache_key_included_unsafe_query(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') au = aliased(User) query_path = self._make_path_registry([inspect(au), "orders"]) opt = Load(au).joinedload(au.orders).\ joinedload(Order.items) eq_(opt._generate_cache_key(query_path), False)
def test_bound_cache_key_included_safe_w_option(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') opt = Load(User).defaultload("orders").joinedload( "items", innerjoin=True).defer("description") query_path = self._make_path_registry([User, "orders"]) eq_(opt._generate_cache_key(query_path), ((Order, 'items', Item, ('lazy', 'joined'), ('innerjoin', True)), (Order, 'items', Item, 'description', ('deferred', True), ('instrument', True))))
def test_bound_cache_key_included_unsafe_option_three(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "orders", Order, "items"]) opt = Load(User).joinedload(User.orders).\ joinedload(Order.items.of_type(aliased(SubItem))) eq_( opt._generate_cache_key(query_path), False )
def test_bound_cache_key_excluded_on_other(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry( [User, "addresses"]) opt = Load(User).joinedload(User.orders).joinedload(Order.items) eq_( opt._generate_cache_key(query_path), None )
def test_bound_cache_key_included_unsafe_query(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') au = aliased(User) query_path = self._make_path_registry([inspect(au), "orders"]) opt = Load(au).joinedload(au.orders).\ joinedload(Order.items) eq_( opt._generate_cache_key(query_path), False )
def test_bound_cache_key_included_safe(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "orders"]) opt = Load(User).joinedload(User.orders).joinedload(Order.items) eq_( opt._generate_cache_key(query_path), ( ((Order, 'items', Item, ('lazy', 'joined')),) ) )
def test_bound_cache_key_included_safe_w_deferred(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).joinedload(User.addresses).\ defer(Address.email_address).defer(Address.user_id) eq_(opt._generate_cache_key(query_path), ( (Address, "email_address", ('deferred', True), ('instrument', True)), (Address, "user_id", ('deferred', True), ('instrument', True)), ))
def test_bound_cache_key_undefer_group(self): User, Address = self.classes('User', 'Address') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).defaultload(User.addresses).undefer_group('xyz') eq_( opt._generate_cache_key(query_path), ( (Address, 'column:*', ("undefer_group_xyz", True)), ) )
def test_bound_cache_key_included_safe_w_loadonly(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).defaultload(User.addresses).\ load_only("id", "email_address") eq_(opt._generate_cache_key(query_path), ((Address, 'id', ('deferred', False), ('instrument', True)), (Address, 'email_address', ('deferred', False), ('instrument', True)), (Address, 'column:*', ('deferred', True), ('instrument', True), ('undefer_pks', True))))
def test_bound_cache_key_included_safe_w_option(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') opt = Load(User).defaultload("orders").joinedload( "items", innerjoin=True).defer("description") query_path = self._make_path_registry([User, "orders"]) eq_( opt._generate_cache_key(query_path), ( (Order, 'items', Item, ('lazy', 'joined'), ('innerjoin', True)), (Order, 'items', Item, 'description', ('deferred', True), ('instrument', True)) ) )
def test_bound_cache_key_excluded_of_type_unsafe(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') # query of: # # query(User).options( # subqueryload(User.orders). # subqueryload(Order.items.of_type(aliased(SubItem)))) # # # we are lazy loading Address objects from User.addresses # the path excludes our option so cache key should # be None query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).subqueryload(User.orders).\ subqueryload(Order.items.of_type(aliased(SubItem))) eq_(opt._generate_cache_key(query_path), None)
def test_bound_cache_key_included_safe_w_loadonly(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).defaultload(User.addresses).\ load_only("id", "email_address") eq_( opt._generate_cache_key(query_path), ( (Address, 'id', ('deferred', False), ('instrument', True)), (Address, 'email_address', ('deferred', False), ('instrument', True)), (Address, 'column:*', ('deferred', True), ('instrument', True), ('undefer_pks', True)) ) )
def test_bound_cache_key_excluded_of_type_unsafe(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') # query of: # # query(User).options( # subqueryload(User.orders). # subqueryload(Order.items.of_type(aliased(SubItem)))) # # # we are lazy loading Address objects from User.addresses # the path excludes our option so cache key should # be None query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).subqueryload(User.orders).\ subqueryload(Order.items.of_type(aliased(SubItem))) eq_( opt._generate_cache_key(query_path), None )
def test_bound_cache_key_included_safe_w_deferred(self): User, Address, Order, Item, SubItem = self.classes( 'User', 'Address', 'Order', 'Item', 'SubItem') query_path = self._make_path_registry([User, "addresses"]) opt = Load(User).joinedload(User.addresses).\ defer(Address.email_address).defer(Address.user_id) eq_( opt._generate_cache_key(query_path), ( ( Address, "email_address", ('deferred', True), ('instrument', True) ), ( Address, "user_id", ('deferred', True), ('instrument', True) ), ) )
def go(): l1 = Load(User).joinedload(User.addresses) l1._generate_cache_key()