summaryrefslogtreecommitdiff
path: root/tests/cache
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2014-11-23 20:33:07 +0200
committerBerker Peksag <berker.peksag@gmail.com>2015-03-14 20:07:16 +0200
commit34fb909180e9df06fa6a993dd5696a49cd152a0b (patch)
tree58dc89a71e6579ebfcb4abed5fc7a8c0c2b0b023 /tests/cache
parenta52cd407b86a51e1badf6771e590361e24fd7155 (diff)
Fixed #12982 -- Added a get_or_set() method to the BaseCache backend.
Diffstat (limited to 'tests/cache')
-rw-r--r--tests/cache/tests.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/cache/tests.py b/tests/cache/tests.py
index 168a808306..ffbed67197 100644
--- a/tests/cache/tests.py
+++ b/tests/cache/tests.py
@@ -884,6 +884,28 @@ class BaseCacheTests(object):
with self.assertRaises(pickle.PickleError):
cache.set('unpickable', Unpickable())
+ def test_get_or_set(self):
+ self.assertIsNone(cache.get('projector'))
+ self.assertEqual(cache.get_or_set('projector', 42), 42)
+ self.assertEqual(cache.get('projector'), 42)
+
+ def test_get_or_set_callable(self):
+ def my_callable():
+ return 'value'
+
+ self.assertEqual(cache.get_or_set('mykey', my_callable), 'value')
+
+ def test_get_or_set_version(self):
+ cache.get_or_set('brian', 1979, version=2)
+ with self.assertRaisesMessage(ValueError, 'You need to specify a value.'):
+ cache.get_or_set('brian')
+ with self.assertRaisesMessage(ValueError, 'You need to specify a value.'):
+ cache.get_or_set('brian', version=1)
+ self.assertIsNone(cache.get('brian', version=1))
+ self.assertEqual(cache.get_or_set('brian', 42, version=1), 42)
+ self.assertEqual(cache.get_or_set('brian', 1979, version=2), 1979)
+ self.assertIsNone(cache.get('brian', version=3))
+
@override_settings(CACHES=caches_setting_for_tests(
BACKEND='django.core.cache.backends.db.DatabaseCache',