fix: invalidate request level cache on settings update instead of turning off cache for requests
This commit is contained in:
parent
2901c4546b
commit
6ef0c46ffb
1 changed files with 7 additions and 11 deletions
|
|
@ -315,43 +315,39 @@ class TestAdminSettingsVcs(object):
|
||||||
setting = SettingsModel().get_setting_by_name(setting_key)
|
setting = SettingsModel().get_setting_by_name(setting_key)
|
||||||
assert setting.app_settings_value is new_value
|
assert setting.app_settings_value is new_value
|
||||||
|
|
||||||
def test_vcs_settings_cache_consistency(self, form_defaults, csrf_token):
|
def test_vcs_settings_cache_invalidation(self, form_defaults, csrf_token):
|
||||||
"""Test that VCS settings show fresh values after update (cache bug fix)."""
|
|
||||||
from rhodecode.apps.admin.views.settings import AdminSettingsView
|
from rhodecode.apps.admin.views.settings import AdminSettingsView
|
||||||
|
|
||||||
# Test PR and diff cache settings that were affected by the cache bug
|
# Test settings that were bugged
|
||||||
settings_to_test = {
|
settings_to_test = {
|
||||||
"pr_merge_enabled": False,
|
"pr_merge_enabled": False,
|
||||||
"diff_cache": True,
|
"diff_cache": True,
|
||||||
"auto_merge_enabled": False,
|
"auto_merge_enabled": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Also test UI setting for repository size hook
|
# Also test some UI setting for comparison, those worked fine
|
||||||
ui_settings_to_test = {
|
ui_settings_to_test = {
|
||||||
"hooks_changegroup_repo_size": True,
|
"hooks_changegroup_repo_size": True,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update form with new values for regular settings
|
# Update form with new values
|
||||||
for setting_key, new_value in settings_to_test.items():
|
for setting_key, new_value in settings_to_test.items():
|
||||||
form_defaults[f"rhodecode_{setting_key}"] = str(new_value).lower()
|
form_defaults[f"rhodecode_{setting_key}"] = str(new_value).lower()
|
||||||
|
|
||||||
# Update form with new values for UI settings
|
|
||||||
for ui_key, new_value in ui_settings_to_test.items():
|
for ui_key, new_value in ui_settings_to_test.items():
|
||||||
form_defaults[ui_key] = str(new_value).lower()
|
form_defaults[ui_key] = str(new_value).lower()
|
||||||
|
|
||||||
form_defaults["csrf_token"] = csrf_token
|
form_defaults["csrf_token"] = csrf_token
|
||||||
|
|
||||||
# Submit the form - this should trigger proper cache invalidation
|
# Submit the form and follow redirect
|
||||||
response = self.app.post(route_path("admin_settings_vcs_update"), params=form_defaults, status=302)
|
response = self.app.post(route_path("admin_settings_vcs_update"), params=form_defaults, status=302)
|
||||||
response = response.follow()
|
_ = response.follow()
|
||||||
|
|
||||||
# Check db has correct values
|
# Check db has correct values
|
||||||
for setting_key, expected_value in settings_to_test.items():
|
for setting_key, expected_value in settings_to_test.items():
|
||||||
setting = SettingsModel().get_setting_by_name(setting_key)
|
setting = SettingsModel().get_setting_by_name(setting_key)
|
||||||
assert setting.app_settings_value is expected_value
|
assert setting.app_settings_value is expected_value
|
||||||
|
|
||||||
# Check form defaults should show fresh values (not cached stale ones)
|
# Make sure cache invalidation clears both database and request cache
|
||||||
# This tests that our cache invalidation properly clears both database and request cache
|
|
||||||
fresh_defaults = AdminSettingsView._form_defaults()
|
fresh_defaults = AdminSettingsView._form_defaults()
|
||||||
for setting_key, expected_value in settings_to_test.items():
|
for setting_key, expected_value in settings_to_test.items():
|
||||||
form_key = f"rhodecode_{setting_key}"
|
form_key = f"rhodecode_{setting_key}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue