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

Add tests for invalidating caches

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

+ 4 - 4
misago/cache/cache.py

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

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

@@ -1,4 +1,5 @@
 from unittest.mock import patch
+
 from django.test import TestCase
 
 from misago.cache.cache import (

+ 40 - 0
misago/cache/tests/test_invalidating_caches.py

@@ -0,0 +1,40 @@
+from unittest.mock import patch
+
+from django.test import TestCase
+
+from misago.cache.cache import (
+    CACHE_NAME, get_cache_versions_from_db, invalidate_cache, invalidate_all_caches
+)
+from misago.cache.models import CacheVersion
+
+
+def cache_version():
+    return CacheVersion.objects.create(cache="test_cache")
+
+
+class InvalidatingCacheTests(TestCase):
+    @patch('django.core.cache.cache.delete')
+    def test_invalidating_cache_updates_cache_version_in_database(self, _):
+        test_cache = cache_version()
+        invalidate_cache(test_cache.cache)
+        updated_test_cache = CacheVersion.objects.get(cache=test_cache.cache)
+        assert test_cache.version != updated_test_cache.version
+
+    @patch('django.core.cache.cache.delete')
+    def test_invalidating_cache_deletes_versions_cache(self, cache_delete):
+        test_cache = cache_version()
+        invalidate_cache(test_cache.cache)
+        cache_delete.assert_called_once_with(CACHE_NAME)
+
+    @patch('django.core.cache.cache.delete')
+    def test_invalidating_all_caches_updates_cache_version_in_database(self, _):
+        test_cache = cache_version()
+        invalidate_all_caches()
+        updated_test_cache = CacheVersion.objects.get(cache=test_cache.cache)
+        assert test_cache.version != updated_test_cache.version
+
+    @patch('django.core.cache.cache.delete')
+    def test_invalidating_all_caches_deletes_versions_cache(self, cache_delete):
+        cache_version()
+        invalidate_all_caches()
+        cache_delete.assert_called_once_with(CACHE_NAME)