def test_delete_cache(self): """ Ensure delete_cache function is working. """ from django.conf import settings from django.core.cache import cache as django_cache from garage.cache import cache_key, cache_data, delete_cache key = 'abcd1234' @cache_data(key) def dummy_func(*args): return '_'.join([a for a in args]) some_data = ['abcd1234', 'l’écriture', '寫作'] result = dummy_func(*some_data) # test if data is in cache cached_data = django_cache.get(key) self._msg('test', 'delete_cache', first=True) self._msg('CACHES', repr(settings.CACHES)) self._msg('key', key) self._msg('some_data', repr(some_data)) self._msg('result', result) self._msg('cached_data', cached_data) self.assertEqual(result, cached_data) delete_cache(key) cached_data = django_cache.get(key) self.assertFalse(cached_data) self._msg('data after delete', cached_data)
def test_delete_cache_no_op(self): """ delete_cache should return False and do nothing if key is not in cache. """ from django.conf import settings from django.core.cache import cache as django_cache from garage.cache import delete_cache key = 'abcd1234' # test if data is in cache cached_data = django_cache.get(key) # delete cache and check result result = delete_cache(key) self._msg('test', 'delete_cache', first=True) self._msg('CACHES', repr(settings.CACHES)) self._msg('key', key) self._msg('result', result) self._msg('cached_data', cached_data) self.assertFalse(cached_data) self.assertFalse(result)
def test_cache_data(self): """ Ensure cache_data decorator is working. * assumes CACHES is defined as a real cache (not dummy cache) """ from django.conf import settings from django.core.cache import cache as django_cache from garage.cache import cache_key, cache_data, delete_cache key = 'abcd1234' @cache_data(key) def dummy_func(*args): return '_'.join(args) # make sure data is not in cache cached_data = django_cache.get(key) self.assertFalse(cached_data) # cache data some_data = ['abcd1234', 'l’écriture', '寫作'] result = dummy_func(*some_data) # test if data is in cache cached_data = django_cache.get(key) self._msg('test', 'cache_data', first=True) self._msg('CACHES', repr(settings.CACHES)) self._msg('key', key) self._msg('some_data', repr(some_data)) self._msg('result', result) self._msg('cached_data', cached_data) self.assertEqual(result, cached_data) delete_cache(key) cached_data = django_cache.get(key) self.assertFalse(cached_data) # test cache_data without providing key @cache_data() def dummy_func(*args): return '_'.join([a for a in args]) key = dummy_func.__name__ # make sure data is not in cache cached_data = django_cache.get(key) self.assertFalse(cached_data) # cache data some_data = ['abcd1234', 'l’écriture', '寫作'] result = dummy_func(*some_data) # test if data is in cache cached_data = django_cache.get(key) self._msg('test', 'cache_data (without key)', first=True) self._msg('key', key) self._msg('some_data', repr(some_data)) self._msg('result', result) self._msg('cached_data', cached_data) self.assertEqual(result, cached_data) delete_cache(key) cached_data = django_cache.get(key) self.assertFalse(cached_data) # test cache_data with callable key def make_key(*args, **kwargs): k = '{0}#{1}'.format(repr(args), repr(kwargs)) return k @cache_data(make_key) def dummy_func(*args): return '_'.join([a for a in args]) # cache data some_data = ['abcd1234', 'l’écriture', '寫作'] key = make_key(*some_data) # make sure data is not in cache cached_data = django_cache.get(key) self.assertFalse(cached_data) result = dummy_func(*some_data) # test if data is in cache cached_data = django_cache.get(key) self._msg('test', 'cache_data (without key)', first=True) self._msg('key (from callable)', key) self._msg('some_data', repr(some_data)) self._msg('result', result) self._msg('cached_data', cached_data) self.assertEqual(result, cached_data) delete_cache(key) cached_data = django_cache.get(key) self.assertFalse(cached_data)