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

Add tests for dynamic settings loading, improve test assertions in misago.cache

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

+ 6 - 4
misago/cache/tests/test_getting_cache_versions.py

@@ -9,8 +9,8 @@ from misago.cache.versions import (
 
 class CacheVersionsTests(TestCase):
     def test_db_getter_returns_cache_versions_from_db(self):
-        cache_versions = get_cache_versions_from_db()
-        assert cache_versions
+        with self.assertNumQueries(1):
+            assert get_cache_versions_from_db()
 
     @patch('django.core.cache.cache.get', return_value=True)
     def test_cache_getter_returns_cache_versions_from_cache(self, cache_get):
@@ -19,14 +19,16 @@ class CacheVersionsTests(TestCase):
 
     @patch('django.core.cache.cache.get', return_value=True)
     def test_getter_reads_from_cache(self, cache_get):
-        assert get_cache_versions() is True
+        with self.assertNumQueries(0):
+            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
+        with self.assertNumQueries(1):
+            assert get_cache_versions() == db_caches
         cache_get.assert_called_once_with(CACHE_NAME)
 
     @patch('django.core.cache.cache.set')

+ 28 - 0
misago/conf/tests/test_getting_dynamic_setting_value.py

@@ -1,3 +1,5 @@
+from unittest.mock import patch
+
 from django.test import TestCase
 
 from misago.conf import CACHE_NAME
@@ -10,6 +12,32 @@ cache_versions = {CACHE_NAME: "abcdefgh"}
 
 
 class GettingSettingValueTests(TestCase):
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value=None)
+    def test_dynamic_settings_are_loaded_from_database_if_cache_is_not_available(self, cache_get, _):
+        with self.assertNumQueries(1):
+            DynamicSettings(cache_versions)
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value={})
+    def test_dynamic_settings_are_loaded_from_cache_if_it_is_not_none(self, cache_get, _):
+        with self.assertNumQueries(0):
+            DynamicSettings(cache_versions)
+        cache_get.assert_called_once()
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value=None)
+    def test_dynamic_settings_cache_is_set_if_none_exists(self, _, cache_set):
+        DynamicSettings(cache_versions)
+        cache_set.assert_called_once()
+
+    @patch('django.core.cache.cache.set')
+    @patch('django.core.cache.cache.get', return_value={})
+    def test_dynamic_settings_cache_is_not_set_if_it_already_exists(self, _, cache_set):
+        with self.assertNumQueries(0):
+            DynamicSettings(cache_versions)
+        cache_set.assert_not_called()
+
     def test_accessing_attr_returns_setting_value(self):
         settings = DynamicSettings(cache_versions)
         assert settings.forum_name == "Misago"