Commit 10885edf authored by Sean McGivern's avatar Sean McGivern

Don't use Markdown cache for stubbed settings in specs

The ApplicationSetting model uses the CacheMarkdownField concern, which updates
the cached HTML when the field is updated in the database. However, in specs,
when we want to test conditions using ApplicationSetting, we stub it, because
this is accessed in different ways throughout the application.

This means that if a spec runs that caches one of the Markdown fields, and a
later spec uses `stub_application_setting` to set the raw value of that field,
the cached value was still the original one. We can work around this by ignoring
the Markdown cache in contexts where we're using `stub_application_setting`.

We could be smarter, and only do this on the Markdown fields of the model, but
this is probably fine.
parent 391bb437
...@@ -37,7 +37,7 @@ describe 'Help Pages' do ...@@ -37,7 +37,7 @@ describe 'Help Pages' do
context 'in a production environment with version check enabled', :js do context 'in a production environment with version check enabled', :js do
before do before do
allow(Rails.env).to receive(:production?) { true } allow(Rails.env).to receive(:production?) { true }
allow_any_instance_of(ApplicationSetting).to receive(:version_check_enabled) { true } stub_application_setting(version_check_enabled: true)
allow_any_instance_of(VersionCheck).to receive(:url) { '/version-check-url' } allow_any_instance_of(VersionCheck).to receive(:url) { '/version-check-url' }
sign_in(create(:user)) sign_in(create(:user))
...@@ -56,9 +56,9 @@ describe 'Help Pages' do ...@@ -56,9 +56,9 @@ describe 'Help Pages' do
describe 'when help page is customized' do describe 'when help page is customized' do
before do before do
allow_any_instance_of(ApplicationSetting).to receive(:help_page_hide_commercial_content?) { true } stub_application_setting(help_page_hide_commercial_content: true,
allow_any_instance_of(ApplicationSetting).to receive(:help_page_text) { "My Custom Text" } help_page_text: 'My Custom Text',
allow_any_instance_of(ApplicationSetting).to receive(:help_page_support_url) { "http://example.com/help" } help_page_support_url: 'http://example.com/help')
sign_in(create(:user)) sign_in(create(:user))
visit help_path visit help_path
......
...@@ -7,6 +7,9 @@ module StubConfiguration ...@@ -7,6 +7,9 @@ module StubConfiguration
allow_any_instance_of(ApplicationSetting).to receive_messages(to_settings(messages)) allow_any_instance_of(ApplicationSetting).to receive_messages(to_settings(messages))
allow(Gitlab::CurrentSettings.current_application_settings) allow(Gitlab::CurrentSettings.current_application_settings)
.to receive_messages(to_settings(messages)) .to receive_messages(to_settings(messages))
# Ensure that we don't use the Markdown cache when stubbing these values
allow_any_instance_of(ApplicationSetting).to receive(:cached_html_up_to_date?).and_return(false)
end end
def stub_not_protect_default_branch def stub_not_protect_default_branch
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment