mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Fixed #27480 -- Added cache.touch().
This commit is contained in:
30
tests/cache/tests.py
vendored
30
tests/cache/tests.py
vendored
@@ -141,6 +141,10 @@ class DummyCacheTests(SimpleTestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
cache.decr('does_not_exist')
|
||||
|
||||
def test_touch(self):
|
||||
"""Dummy cache can't do touch()."""
|
||||
self.assertIs(cache.touch('whatever'), False)
|
||||
|
||||
def test_data_types(self):
|
||||
"All data types are ignored equally by the dummy cache"
|
||||
stuff = {
|
||||
@@ -427,6 +431,23 @@ class BaseCacheTests:
|
||||
self.assertEqual(cache.get("expire2"), "newvalue")
|
||||
self.assertFalse(cache.has_key("expire3"))
|
||||
|
||||
def test_touch(self):
|
||||
# cache.touch() updates the timeout.
|
||||
cache.set('expire1', 'very quickly', timeout=1)
|
||||
self.assertIs(cache.touch('expire1', timeout=4), True)
|
||||
time.sleep(2)
|
||||
self.assertTrue(cache.has_key('expire1'))
|
||||
time.sleep(3)
|
||||
self.assertFalse(cache.has_key('expire1'))
|
||||
|
||||
# cache.touch() works without the timeout argument.
|
||||
cache.set('expire1', 'very quickly', timeout=1)
|
||||
self.assertIs(cache.touch('expire1'), True)
|
||||
time.sleep(2)
|
||||
self.assertTrue(cache.has_key('expire1'))
|
||||
|
||||
self.assertIs(cache.touch('nonexistent'), False)
|
||||
|
||||
def test_unicode(self):
|
||||
# Unicode values can be cached
|
||||
stuff = {
|
||||
@@ -549,6 +570,11 @@ class BaseCacheTests:
|
||||
self.assertEqual(cache.get('key3'), 'sausage')
|
||||
self.assertEqual(cache.get('key4'), 'lobster bisque')
|
||||
|
||||
cache.set('key5', 'belgian fries', timeout=1)
|
||||
cache.touch('key5', timeout=None)
|
||||
time.sleep(2)
|
||||
self.assertEqual(cache.get('key5'), 'belgian fries')
|
||||
|
||||
def test_zero_timeout(self):
|
||||
"""
|
||||
Passing in zero into timeout results in a value that is not cached
|
||||
@@ -563,6 +589,10 @@ class BaseCacheTests:
|
||||
self.assertIsNone(cache.get('key3'))
|
||||
self.assertIsNone(cache.get('key4'))
|
||||
|
||||
cache.set('key5', 'belgian fries', timeout=5)
|
||||
cache.touch('key5', timeout=0)
|
||||
self.assertIsNone(cache.get('key5'))
|
||||
|
||||
def test_float_timeout(self):
|
||||
# Make sure a timeout given as a float doesn't crash anything.
|
||||
cache.set("key1", "spam", 100.2)
|
||||
|
||||
Reference in New Issue
Block a user