Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
    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)