Exemple #1
0
 def test_invalidate(self):
     # set up
     cache = SimpleCache()
     foo_cache = cache.cache('/{id}')
     @foo_cache
     def foo(id):
         pass
     @foo_cache.invalidate
     def unfoo(id):
         pass
     
     # test
     self.assertEqual(0, len(cache._data))
     
     foo(1)
     self.assertEqual(1, len(cache._data))
     
     unfoo(1)
     self.assertEqual(0, len(cache._data))
     
Exemple #2
0
class CacheTest(TestCase):
    def setUp(self):
        super(CacheTest, self).setUp()
        self.cache = SimpleCache()
        self.calls = 0

    def test_simple(self):
        # set up
        @self.cache.cache('/{id}')
        def foo(id):
            self.calls += 1
            return id
        @self.cache.uncache('/{id}')
        def unfoo(id):
            return id
        
        # test
        self.assertEqual(0, len(self.cache._data))
        
        result = foo(1)
        self.assertEqual(1, result)
        self.assertEqual(1, self.calls)
        self.assertEqual(1, len(self.cache._data))
        
        self.assertEqual(1, foo(1))
        self.assertEqual(1, self.calls)
        self.assertEqual(1, len(self.cache._data))
        
        result = unfoo(1)
        self.assertEqual(1, result)
        self.assertEqual(0, len(self.cache._data))
        
        self.assertEqual(1, foo(1))
        self.assertEqual(2, self.calls)
        self.assertEqual(1, len(self.cache._data))
        
        self.assertEqual(2, foo(2))
        self.assertEqual(3, self.calls)
        self.assertEqual(2, len(self.cache._data))

    def test_ttl(self):
        # set up
        @self.cache.cache('/{id}', ttl=-1)
        def foo(id):
            self.calls += 1
            return id

        # test
        foo(1)
        self.assertEqual(1, self.calls)
        foo(1)
        self.assertEqual(2, self.calls)
        
    def test_extra_vars(self):
        # set up
        @self.cache.cache('/{a}/{ctx.b}', vars={'a': 1, 'ctx': ctx})
        def foo():
            pass
        @self.cache.uncache('/{a}/{ctx.b}', vars={'a': 1, 'ctx': ctx})
        def unfoo():
            pass
        with Context(b=2):
            foo()
            self.assertIn('/1/2', self.cache._data)
            unfoo()
            self.assertNotIn('/1/2', self.cache._data)
        
    def test_invalidate(self):
        # set up
        foo_cache = self.cache.cache('/{id}')
        @foo_cache
        def foo(id):
            pass
        @foo_cache.invalidate
        def unfoo(id):
            pass
        
        # test
        self.assertEqual(0, len(self.cache._data))
        
        foo(1)
        self.assertEqual(1, len(self.cache._data))
        
        unfoo(1)
        self.assertEqual(0, len(self.cache._data))
        
Exemple #3
0
class CacheTest(TestCase):
    def setUp(self):
        super(CacheTest, self).setUp()
        self.cache = SimpleCache()
        self.calls = 0

    def test_simple(self):
        # set up
        @self.cache.cache('/{id}')
        def foo(id):
            self.calls += 1
            return id

        @self.cache.uncache('/{id}')
        def unfoo(id):
            return id

        # test
        self.assertEqual(0, len(self.cache._data))

        result = foo(1)
        self.assertEqual(1, result)
        self.assertEqual(1, self.calls)
        self.assertEqual(1, len(self.cache._data))

        self.assertEqual(1, foo(1))
        self.assertEqual(1, self.calls)
        self.assertEqual(1, len(self.cache._data))

        result = unfoo(1)
        self.assertEqual(1, result)
        self.assertEqual(0, len(self.cache._data))

        self.assertEqual(1, foo(1))
        self.assertEqual(2, self.calls)
        self.assertEqual(1, len(self.cache._data))

        self.assertEqual(2, foo(2))
        self.assertEqual(3, self.calls)
        self.assertEqual(2, len(self.cache._data))

    def test_ttl(self):
        # set up
        @self.cache.cache('/{id}', ttl=-1)
        def foo(id):
            self.calls += 1
            return id

        # test
        foo(1)
        self.assertEqual(1, self.calls)
        foo(1)
        self.assertEqual(2, self.calls)

    def test_extra_vars(self):
        # set up
        @self.cache.cache('/{a}/{ctx.b}', vars={'a': 1, 'ctx': ctx})
        def foo():
            pass

        @self.cache.uncache('/{a}/{ctx.b}', vars={'a': 1, 'ctx': ctx})
        def unfoo():
            pass

        with Context(b=2):
            foo()
            self.assertIn('/1/2', self.cache._data)
            unfoo()
            self.assertNotIn('/1/2', self.cache._data)

    def test_invalidate(self):
        # set up
        foo_cache = self.cache.cache('/{id}')

        @foo_cache
        def foo(id):
            pass

        @foo_cache.invalidate
        def unfoo(id):
            pass

        # test
        self.assertEqual(0, len(self.cache._data))

        foo(1)
        self.assertEqual(1, len(self.cache._data))

        unfoo(1)
        self.assertEqual(0, len(self.cache._data))