diff options
| author | Berker Peksag <berker.peksag@gmail.com> | 2014-11-23 20:33:07 +0200 |
|---|---|---|
| committer | Berker Peksag <berker.peksag@gmail.com> | 2015-03-14 20:07:16 +0200 |
| commit | 34fb909180e9df06fa6a993dd5696a49cd152a0b (patch) | |
| tree | 58dc89a71e6579ebfcb4abed5fc7a8c0c2b0b023 /tests/cache | |
| parent | a52cd407b86a51e1badf6771e590361e24fd7155 (diff) | |
Fixed #12982 -- Added a get_or_set() method to the BaseCache backend.
Diffstat (limited to 'tests/cache')
| -rw-r--r-- | tests/cache/tests.py | 22 |
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', |
