Просмотр исходного кода

Add tests for misago.cache.cache

rafalp 6 лет назад
Родитель
Сommit
c919604d4e

+ 2 - 2
misago/cache/versions.py → misago/cache/cache.py

@@ -23,14 +23,14 @@ def get_cache_versions_from_db():
     return {i.cache: i.version for i in queryset}
 
 
-def invalidate(cache):
+def invalidate_cache(cache):
     CacheVersion.objects.filter(cache=cache).update(
         version=generate_version_string(),
     )
     cache.delete(CACHE_NAME)
 
 
-def invalidate_all():
+def invalidate_all_caches():
     for cache in get_cache_versions_from_db().keys():
         CacheVersion.objects.filter(cache=cache).update(
             version=generate_version_string(),

+ 3 - 3
misago/cache/management/commands/invalidateversionedcaches.py

@@ -1,11 +1,11 @@
 from django.core.management.base import BaseCommand
 
-from misago.cache.versions import invalidate_all
+from misago.cache.cache import invalidate_all_caches
 
 
 class Command(BaseCommand):
     help = 'Invalidates versioned caches'
 
     def handle(self, *args, **options):
-        invalidate_all()
-        self.stdout.write("Invalidated versioned caches.")
+        invalidate_all_caches()
+        self.stdout.write("Invalidated all versioned caches.")

+ 1 - 1
misago/cache/middleware.py

@@ -1,6 +1,6 @@
 from django.utils.functional import SimpleLazyObject
 
-from .versions import get_cache_versions
+from .cache import get_cache_versions
 
 
 def cache_versions_middleware(get_response):

+ 43 - 0
misago/cache/tests/test_getting_cache_versions.py

@@ -0,0 +1,43 @@
+from unittest.mock import patch
+from django.test import TestCase
+
+from misago.cache.cache import (
+    CACHE_NAME, get_cache_versions, get_cache_versions_from_cache, get_cache_versions_from_db
+)
+
+
+class CacheVersionsTests(TestCase):
+    def test_db_getter_returns_cache_versions_from_db(self):
+        cache_versions = get_cache_versions_from_db()
+        assert cache_versions
+
+    @patch('django.core.cache.cache.get', return_value=True)
+    def test_cache_getter_returns_cache_versions_from_cache(self, cache_get):
+        assert get_cache_versions_from_cache() is True
+        cache_get.assert_called_once_with(CACHE_NAME)
+
+    @patch('django.core.cache.cache.get', return_value=True)
+    def test_getter_reads_from_cache(self, cache_get):
+        assert get_cache_versions() is True
+        cache_get.assert_called_once_with(CACHE_NAME)
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value=None)
+    def test_getter_reads_from_db_when_cache_is_not_available(self, cache_get, _):
+        db_caches = get_cache_versions_from_db()
+        assert get_cache_versions() == db_caches
+        cache_get.assert_called_once_with(CACHE_NAME)
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value=None)
+    def test_getter_sets_new_cache_if_no_cache_is_set(self, _, cache_set):
+        assert get_cache_versions()
+        db_caches = get_cache_versions_from_db()
+        cache_set.assert_called_once_with(CACHE_NAME, db_caches)
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value=True)
+    def test_getter_is_not_setting_new_cache_if_cache_is_set(self, _, cache_set):
+        assert get_cache_versions()
+        db_caches = get_cache_versions_from_db()
+        cache_set.assert_not_called()