This repository was archived by the owner on Sep 22, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathtest_cache_backends.py
More file actions
70 lines (51 loc) · 2.47 KB
/
test_cache_backends.py
File metadata and controls
70 lines (51 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# -*- coding: utf-8 -*-
import unittest
from unittest import mock
from thumbnails.cache_backends import (BaseCacheBackend, DjangoCacheBackend, RedisCacheBackend,
SimpleCacheBackend)
from thumbnails.images import Thumbnail
from .utils import has_installed
class CacheBackendTestMixin(object):
def setUp(self):
self.backend = self.BACKEND()
def test_get_empty(self):
self.assertIsNone(self.backend.get('not-in-cache'))
def test_set_and_get(self):
thumbnail = Thumbnail(['n', 'ame'], 'jpg')
self.backend.set(thumbnail)
cached_thumbnail = self.backend.get(thumbnail.name)
self.assertIsInstance(cached_thumbnail, Thumbnail)
self.assertEqual(cached_thumbnail.name, thumbnail.name)
class BaseCacheBackendTestCase(unittest.TestCase):
def setUp(self):
self.backend = BaseCacheBackend()
def test_init(self):
self.assertEqual(self.backend.TIMEOUT, 31536000)
@mock.patch('thumbnails.cache_backends.BaseCacheBackend._get')
def test_get_calls_backend_specific_get(self, mock__get):
self.backend.get(['hi', 'there'])
self.backend.get('key')
mock__get.assert_has_calls([mock.call('hi/there'), mock.call('key')])
@mock.patch('thumbnails.cache_backends.BaseCacheBackend._set')
def test_set_calls_backend_specific_set(self, mock__set):
thumbnail = Thumbnail(['hi', 'there'], 'jpg')
self.backend.set(thumbnail)
mock__set.assert_has_calls([mock.call('hi/there', thumbnail)])
class SimpleCacheBackendTestCase(CacheBackendTestMixin, unittest.TestCase):
BACKEND = SimpleCacheBackend
@unittest.skipIf(not has_installed('django'), 'Django is not installed')
class DjangoCacheBackendTestCase(CacheBackendTestMixin, unittest.TestCase):
BACKEND = DjangoCacheBackend
@unittest.skipIf(not has_installed('redis'), 'Redis not installed')
class RedisCacheBackendTestCase(CacheBackendTestMixin, unittest.TestCase):
BACKEND = RedisCacheBackend
def test_get_settings(self):
settings = self.backend.get_settings()
self.assertEqual(settings['host'], '127.0.0.1')
self.assertEqual(settings['port'], 6379)
self.assertEqual(settings['db'], 0)
self.backend.connection_uri = 'redis://example.com:1234/9'
settings = self.backend.get_settings()
self.assertEqual(settings['host'], 'example.com')
self.assertEqual(settings['port'], 1234)
self.assertEqual(settings['db'], 9)