|
@@ -8,36 +8,45 @@ from misago.conf.models import Setting, SettingsGroup
|
|
|
|
|
|
from . import override_dynamic_settings
|
|
from . import override_dynamic_settings
|
|
|
|
|
|
-cache_versions = {CACHE_NAME: "abcdefgh"}
|
|
|
|
|
|
+cache_version = "abcdefgh"
|
|
|
|
+cache_versions = {CACHE_NAME: cache_version}
|
|
|
|
|
|
|
|
|
|
class GettingSettingValueTests(TestCase):
|
|
class GettingSettingValueTests(TestCase):
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.get', return_value=None)
|
|
@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, _):
|
|
|
|
|
|
+ def test_settings_are_loaded_from_database_if_cache_is_not_available(self, cache_get, _):
|
|
with self.assertNumQueries(1):
|
|
with self.assertNumQueries(1):
|
|
DynamicSettings(cache_versions)
|
|
DynamicSettings(cache_versions)
|
|
|
|
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.get', return_value={})
|
|
@patch('django.core.cache.cache.get', return_value={})
|
|
- def test_dynamic_settings_are_loaded_from_cache_if_it_is_not_none(self, cache_get, _):
|
|
|
|
|
|
+ def test_settings_are_loaded_from_cache_if_it_is_not_none(self, cache_get, _):
|
|
with self.assertNumQueries(0):
|
|
with self.assertNumQueries(0):
|
|
DynamicSettings(cache_versions)
|
|
DynamicSettings(cache_versions)
|
|
cache_get.assert_called_once()
|
|
cache_get.assert_called_once()
|
|
|
|
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.get', return_value=None)
|
|
@patch('django.core.cache.cache.get', return_value=None)
|
|
- def test_dynamic_settings_cache_is_set_if_none_exists(self, _, cache_set):
|
|
|
|
|
|
+ def test_settings_cache_is_set_if_none_exists(self, _, cache_set):
|
|
DynamicSettings(cache_versions)
|
|
DynamicSettings(cache_versions)
|
|
cache_set.assert_called_once()
|
|
cache_set.assert_called_once()
|
|
|
|
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.set')
|
|
@patch('django.core.cache.cache.get', return_value={})
|
|
@patch('django.core.cache.cache.get', return_value={})
|
|
- def test_dynamic_settings_cache_is_not_set_if_it_already_exists(self, _, cache_set):
|
|
|
|
|
|
+ def test_settings_cache_is_not_set_if_it_already_exists(self, _, cache_set):
|
|
with self.assertNumQueries(0):
|
|
with self.assertNumQueries(0):
|
|
DynamicSettings(cache_versions)
|
|
DynamicSettings(cache_versions)
|
|
cache_set.assert_not_called()
|
|
cache_set.assert_not_called()
|
|
|
|
|
|
|
|
+ @patch('django.core.cache.cache.set')
|
|
|
|
+ @patch('django.core.cache.cache.get', return_value=None)
|
|
|
|
+ def test_settings_cache_key_includes_cache_name_and_version(self, _, cache_set):
|
|
|
|
+ DynamicSettings(cache_versions)
|
|
|
|
+ cache_key = cache_set.call_args[0][0]
|
|
|
|
+ assert CACHE_NAME in cache_key
|
|
|
|
+ assert cache_version in cache_key
|
|
|
|
+
|
|
def test_accessing_attr_returns_setting_value(self):
|
|
def test_accessing_attr_returns_setting_value(self):
|
|
settings = DynamicSettings(cache_versions)
|
|
settings = DynamicSettings(cache_versions)
|
|
assert settings.forum_name == "Misago"
|
|
assert settings.forum_name == "Misago"
|
|
@@ -49,7 +58,7 @@ class GettingSettingValueTests(TestCase):
|
|
|
|
|
|
def test_accessing_attr_for_lazy_setting_without_value_returns_none(self):
|
|
def test_accessing_attr_for_lazy_setting_without_value_returns_none(self):
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
- setting = Setting.objects.create(
|
|
|
|
|
|
+ Setting.objects.create(
|
|
group=settings_group,
|
|
group=settings_group,
|
|
setting="lazy_setting",
|
|
setting="lazy_setting",
|
|
name="Lazy setting",
|
|
name="Lazy setting",
|
|
@@ -62,7 +71,7 @@ class GettingSettingValueTests(TestCase):
|
|
|
|
|
|
def test_accessing_attr_for_lazy_setting_with_value_returns_true(self):
|
|
def test_accessing_attr_for_lazy_setting_with_value_returns_true(self):
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
- setting = Setting.objects.create(
|
|
|
|
|
|
+ Setting.objects.create(
|
|
group=settings_group,
|
|
group=settings_group,
|
|
setting="lazy_setting",
|
|
setting="lazy_setting",
|
|
name="Lazy setting",
|
|
name="Lazy setting",
|
|
@@ -76,7 +85,7 @@ class GettingSettingValueTests(TestCase):
|
|
|
|
|
|
def test_lazy_setting_getter_for_lazy_setting_with_value_returns_real_value(self):
|
|
def test_lazy_setting_getter_for_lazy_setting_with_value_returns_real_value(self):
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
- setting = Setting.objects.create(
|
|
|
|
|
|
+ Setting.objects.create(
|
|
group=settings_group,
|
|
group=settings_group,
|
|
setting="lazy_setting",
|
|
setting="lazy_setting",
|
|
name="Lazy setting",
|
|
name="Lazy setting",
|
|
@@ -90,7 +99,7 @@ class GettingSettingValueTests(TestCase):
|
|
|
|
|
|
def test_lazy_setting_getter_for_lazy_setting_makes_db_query(self):
|
|
def test_lazy_setting_getter_for_lazy_setting_makes_db_query(self):
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
- setting = Setting.objects.create(
|
|
|
|
|
|
+ Setting.objects.create(
|
|
group=settings_group,
|
|
group=settings_group,
|
|
setting="lazy_setting",
|
|
setting="lazy_setting",
|
|
name="Lazy setting",
|
|
name="Lazy setting",
|
|
@@ -105,7 +114,7 @@ class GettingSettingValueTests(TestCase):
|
|
|
|
|
|
def test_lazy_setting_getter_for_lazy_setting_is_reusing_query_result(self):
|
|
def test_lazy_setting_getter_for_lazy_setting_is_reusing_query_result(self):
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
- setting = Setting.objects.create(
|
|
|
|
|
|
+ Setting.objects.create(
|
|
group=settings_group,
|
|
group=settings_group,
|
|
setting="lazy_setting",
|
|
setting="lazy_setting",
|
|
name="Lazy setting",
|
|
name="Lazy setting",
|
|
@@ -127,4 +136,34 @@ class GettingSettingValueTests(TestCase):
|
|
def test_lazy_setting_getter_for_not_lazy_setting_raises_value_error(self):
|
|
def test_lazy_setting_getter_for_not_lazy_setting_raises_value_error(self):
|
|
settings = DynamicSettings(cache_versions)
|
|
settings = DynamicSettings(cache_versions)
|
|
with self.assertRaises(ValueError):
|
|
with self.assertRaises(ValueError):
|
|
- settings.get_lazy_setting_value("forum_name")
|
|
|
|
|
|
+ settings.get_lazy_setting_value("forum_name")
|
|
|
|
+
|
|
|
|
+ def test_public_settings_getter_returns_dict_with_public_settings(self):
|
|
|
|
+ settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
|
|
+ Setting.objects.create(
|
|
|
|
+ group=settings_group,
|
|
|
|
+ setting="public_setting",
|
|
|
|
+ name="Public setting",
|
|
|
|
+ dry_value="Hello",
|
|
|
|
+ is_public=True,
|
|
|
|
+ field_extra={},
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ settings = DynamicSettings(cache_versions)
|
|
|
|
+ public_settings = settings.get_public_settings()
|
|
|
|
+ assert public_settings["public_setting"] == "Hello"
|
|
|
|
+
|
|
|
|
+ def test_public_settings_getter_excludes_private_settings_from_dict(self):
|
|
|
|
+ settings_group = SettingsGroup.objects.create(key="test", name="Test")
|
|
|
|
+ Setting.objects.create(
|
|
|
|
+ group=settings_group,
|
|
|
|
+ setting="private_setting",
|
|
|
|
+ name="Private setting",
|
|
|
|
+ dry_value="Hello",
|
|
|
|
+ is_public=False,
|
|
|
|
+ field_extra={},
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ settings = DynamicSettings(cache_versions)
|
|
|
|
+ public_settings = settings.get_public_settings()
|
|
|
|
+ assert "private_setting" not in public_settings
|