def test_query_is_hashable(self): store = IterableStore([]) manager = store.query(TestModel) qs = manager.filter((TestModel.order > 1) & (TestModel.order < 12)) qs = qs.order_by(TestModel.a, ~TestModel.order) query = qs.query query.hints["aggregates"] = (aggregates.Sum("value"),) a1 = query a2 = a1.clone() self.assertEqual(hash(a1), hash(a2))
def test_query_is_hashable(self): store = IterableStore([]) manager = store.query(TestModel) qs = manager.filter((TestModel.order > 1) & (TestModel.order < 12)) qs = qs.order_by(TestModel.a, ~TestModel.order) query = qs.query query.hints['aggregates'] = (aggregates.Sum('value'), ) a1 = query a2 = a1.clone() self.assertEqual(hash(a1), hash(a2))
class TestCache(unittest.TestCase): def setUp(self): self.cache = caches.DummyCache() PARENTS = [ TestModel(name='parent_1'), TestModel(name='parent_2'), ] OBJECTS = [ TestModel(name='test_1', order=2, a=1, parent=PARENTS[0], label='alabama', surname='Mister T'), TestModel(name='test_2', order=3, a=1, parent=PARENTS[0], label='arkansas', surname='Colonel'), TestModel(name='test_3', order=1, a=2, parent=PARENTS[1], label='texas', surname='Lincoln'), TestModel(name='test_4', order=4, a=2, parent=PARENTS[1], label='washington', surname='clint'), ] self.store = IterableStore(OBJECTS, identifier='test', cache=self.cache) self.manager = self.store.query(TestModel) def test_store_uses_store_model_app_name_and_hashed_query_for_cache_key(self): refined_store = self.manager.store query = self.manager.all().query cache_parts = [ self.store.identifier, TestModel._meta.app_name, TestModel._meta.name, refined_store.hash_query(query), ] expected = ':'.join(cache_parts) self.assertEqual(refined_store.get_cache_key(query), expected) def test_store_tries_to_return_from_cache_before_executing_query(self): with mock.patch('lifter.store.RefinedStore.get_from_cache', side_effect=exceptions.NotInCache()) as m: qs = self.manager.all() query = qs.query list(qs) m.assert_called_with(query) def test_store_stores_result_in_cache_when_queyr_is_executed(self): r = self.manager.count() cache_key = list(self.cache._data.keys())[0] expires_on, value = self.cache._data[cache_key] self.assertEqual(value, r) @mock.patch('lifter.caches.Cache._get') def test_can_disable_cache(self, mocked): with self.cache.disable(): r = self.manager.count() self.manager.count() mocked.assert_not_called()
def exclude(self, *args, **kwargs): all_objects = self.all() store = IterableStore(all_objects) manager = store.query(self) return manager.exclude(*args, **kwargs)
def all(self): all_instances = [self.klass(eid=i.eid, **i) for i in self._table.all()] store = IterableStore(all_instances) manager = store.query(self) return manager.all()
class TestCache(unittest.TestCase): def setUp(self): self.cache = caches.DummyCache() PARENTS = [ TestModel(name='parent_1'), TestModel(name='parent_2'), ] OBJECTS = [ TestModel(name='test_1', order=2, a=1, parent=PARENTS[0], label='alabama', surname='Mister T'), TestModel(name='test_2', order=3, a=1, parent=PARENTS[0], label='arkansas', surname='Colonel'), TestModel(name='test_3', order=1, a=2, parent=PARENTS[1], label='texas', surname='Lincoln'), TestModel(name='test_4', order=4, a=2, parent=PARENTS[1], label='washington', surname='clint'), ] self.store = IterableStore(OBJECTS, identifier='test', cache=self.cache) self.manager = self.store.query(TestModel) def test_store_uses_store_model_app_name_and_hashed_query_for_cache_key( self): refined_store = self.manager.store query = self.manager.all().query cache_parts = [ self.store.identifier, TestModel._meta.app_name, TestModel._meta.name, refined_store.hash_query(query), ] expected = ':'.join(cache_parts) self.assertEqual(refined_store.get_cache_key(query), expected) def test_store_tries_to_return_from_cache_before_executing_query(self): with mock.patch('lifter.store.RefinedStore.get_from_cache', side_effect=exceptions.NotInCache()) as m: qs = self.manager.all() query = qs.query list(qs) m.assert_called_with(query) def test_store_stores_result_in_cache_when_queyr_is_executed(self): r = self.manager.count() cache_key = list(self.cache._data.keys())[0] expires_on, value = self.cache._data[cache_key] self.assertEqual(value, r) @mock.patch('lifter.caches.Cache._get') def test_can_disable_cache(self, mocked): with self.cache.disable(): r = self.manager.count() self.manager.count() mocked.assert_not_called()