mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-04-30 23:05:35 +08:00
Some of the deprecated settings tests set our site settings to be global settings. When the settings are reloaded between tests (see `stub_deprecated_settings!()`), the setting loader (`SiteSettingExtension.setting()`) will check to see if there's a global setting that would override the site setting, and use that value from previous tests. To fix this, we need to un-global the site setting after the test finishes.
97 lines
2.9 KiB
Ruby
97 lines
2.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe SiteSettings::DeprecatedSettings do
|
|
describe "when not overriding deprecated settings" do
|
|
it "does not act as a proxy to the new methods" do
|
|
stub_deprecated_settings!(override: false) do
|
|
SiteSetting.old_one = true
|
|
|
|
expect(SiteSetting.new_one).to eq(false)
|
|
expect(SiteSetting.new_one?).to eq(false)
|
|
end
|
|
end
|
|
|
|
it "logs warnings when deprecated settings are called" do
|
|
stub_deprecated_settings!(override: false) do
|
|
logger =
|
|
track_log_messages do
|
|
expect(SiteSetting.old_one).to eq(false)
|
|
expect(SiteSetting.old_one?).to eq(false)
|
|
end
|
|
expect(logger.warnings.count).to eq(3)
|
|
|
|
logger = track_log_messages { SiteSetting.old_one(warn: false) }
|
|
expect(logger.warnings.count).to eq(0)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "when overriding deprecated settings" do
|
|
it "acts as a proxy to the new methods" do
|
|
stub_deprecated_settings!(override: true) do
|
|
SiteSetting.old_one = true
|
|
|
|
expect(SiteSetting.new_one).to eq(true)
|
|
expect(SiteSetting.new_one?).to eq(true)
|
|
end
|
|
end
|
|
|
|
it "logs warnings when deprecated settings are called" do
|
|
stub_deprecated_settings!(override: true) do
|
|
logger =
|
|
track_log_messages do
|
|
expect(SiteSetting.old_one).to eq(false)
|
|
expect(SiteSetting.old_one?).to eq(false)
|
|
end
|
|
expect(logger.warnings.count).to eq(2)
|
|
|
|
logger = track_log_messages { SiteSetting.old_one(warn: false) }
|
|
expect(logger.warnings.count).to eq(0)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "when deprecating global settings" do
|
|
describe "when not overriding deprecated settings" do
|
|
it "can access the old method and does not act as a proxy to the new method" do
|
|
global_setting(:old_one, true)
|
|
|
|
SiteSetting.send(:setting, :old_one, true)
|
|
|
|
stub_deprecated_settings!(override: false) do
|
|
SiteSetting.old_one = true
|
|
|
|
expect(SiteSetting.old_one).to eq(true)
|
|
expect(SiteSetting.old_one?).to eq(true)
|
|
|
|
expect(SiteSetting.new_one).to eq(false)
|
|
expect(SiteSetting.new_one?).to eq(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "when overriding deprecated settings" do
|
|
it "can access the old method and acts as a proxy to the new method" do
|
|
global_setting(:old_one, true)
|
|
|
|
SiteSetting.send(:setting, :old_one, true)
|
|
|
|
stub_deprecated_settings!(override: true) do
|
|
SiteSetting.old_one = true
|
|
|
|
expect(SiteSetting.old_one).to eq(true)
|
|
expect(SiteSetting.old_one?).to eq(true)
|
|
|
|
expect(SiteSetting.new_one).to eq(true)
|
|
expect(SiteSetting.new_one?).to eq(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
after do
|
|
global_setting(:old_one, false)
|
|
SiteSetting.refresh!
|
|
SiteSetting.remove_instance_variable(:@shadowed_settings)
|
|
end
|
|
end
|
|
end
|