DEV: Apply syntax_tree formatting to spec/*

This commit is contained in:
David Taylor
2023-01-09 11:18:21 +00:00
parent 0cf6421716
commit cb932d6ee1
907 changed files with 58693 additions and 45909 deletions

View File

@ -11,19 +11,13 @@ RSpec.describe SiteSettingExtension do
# TODO: refactor SiteSettingExtension not to rely on statics in
# DefaultsProvider
#
before do
MessageBus.off
end
before { MessageBus.off }
after do
MessageBus.on
end
after { MessageBus.on }
describe '#types' do
describe "#types" do
context "when verifying enum sequence" do
before do
@types = SiteSetting.types
end
before { @types = SiteSetting.types }
it "'string' should be at 1st position" do
expect(@types[:string]).to eq(1)
@ -48,24 +42,25 @@ RSpec.describe SiteSettingExtension do
end
it "Does not leak state cause changes are not linked" do
t1 = Thread.new do
5.times do
settings = new_settings(SiteSettings::LocalProcessProvider.new)
settings.setting(:title, 'test')
settings.title = 'title1'
expect(settings.title).to eq 'title1'
t1 =
Thread.new do
5.times do
settings = new_settings(SiteSettings::LocalProcessProvider.new)
settings.setting(:title, "test")
settings.title = "title1"
expect(settings.title).to eq "title1"
end
end
end
t2 = Thread.new do
5.times do
settings = new_settings(SiteSettings::LocalProcessProvider.new)
settings.setting(:title, 'test')
settings.title = 'title2'
expect(settings.title).to eq 'title2'
t2 =
Thread.new do
5.times do
settings = new_settings(SiteSettings::LocalProcessProvider.new)
settings.setting(:title, "test")
settings.title = "title2"
expect(settings.title).to eq "title2"
end
end
end
t1.join
t2.join
@ -84,7 +79,6 @@ RSpec.describe SiteSettingExtension do
end
it "will set to new value if provider changes" do
settings.setting(:hello, 1)
settings.hello = 100
expect(settings.hello).to eq(100)
@ -131,9 +125,9 @@ RSpec.describe SiteSettingExtension do
upload2 = Fabricate(:upload)
settings.provider.save(:upload_type, upload2.id, SiteSetting.types[:upload])
expect do
settings.refresh!
end.to change { settings.send(:uploads)[:upload_type] }.from(upload).to(nil)
expect do settings.refresh! end.to change { settings.send(:uploads)[:upload_type] }.from(
upload,
).to(nil)
expect(settings.upload_type).to eq(upload2)
end
@ -141,11 +135,11 @@ RSpec.describe SiteSettingExtension do
it "refreshes the client_settings_json cache" do
upload = Fabricate(:upload)
settings.setting(:upload_type, upload.id.to_s, type: :upload, client: true)
settings.setting(:string_type, 'haha', client: true)
settings.setting(:string_type, "haha", client: true)
settings.refresh!
expect(settings.client_settings_json).to eq(
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"#{upload.url}","string_type":"haha"}|
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"#{upload.url}","string_type":"haha"}|,
)
upload.update!(url: "a_new_url")
@ -153,7 +147,7 @@ RSpec.describe SiteSettingExtension do
settings.refresh!
expect(settings.client_settings_json).to eq(
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"a_new_url","string_type":"changed"}|
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"a_new_url","string_type":"changed"}|,
)
end
end
@ -195,11 +189,20 @@ RSpec.describe SiteSettingExtension do
end
it "should have the correct desc" do
I18n.backend.store_translations(:en, site_settings: { test_setting: "test description <a href='%{base_path}/admin'>/admin</a>" })
expect(settings.description(:test_setting)).to eq("test description <a href='/admin'>/admin</a>")
I18n.backend.store_translations(
:en,
site_settings: {
test_setting: "test description <a href='%{base_path}/admin'>/admin</a>",
},
)
expect(settings.description(:test_setting)).to eq(
"test description <a href='/admin'>/admin</a>",
)
Discourse.stubs(:base_path).returns("/forum")
expect(settings.description(:test_setting)).to eq("test description <a href='/forum/admin'>/admin</a>")
expect(settings.description(:test_setting)).to eq(
"test description <a href='/forum/admin'>/admin</a>",
)
end
it "should have the correct default" do
@ -242,9 +245,7 @@ RSpec.describe SiteSettingExtension do
settings.setting("test_setting", 100)
settings.setting("test_setting", nil, client: true)
message = MessageBus.track_publish('/client_settings') do
settings.test_setting = 88
end.first
message = MessageBus.track_publish("/client_settings") { settings.test_setting = 88 }.first
expect(message).to be_present
end
@ -325,9 +326,7 @@ RSpec.describe SiteSettingExtension do
end
context "when overridden" do
after do
settings.remove_override!(:test_hello?)
end
after { settings.remove_override!(:test_hello?) }
it "should have the correct override" do
settings.test_hello = true
@ -358,7 +357,7 @@ RSpec.describe SiteSettingExtension do
end
end
describe 'int enum' do
describe "int enum" do
class TestIntEnumClass
def self.valid_value?(v)
true
@ -368,24 +367,22 @@ RSpec.describe SiteSettingExtension do
end
end
it 'should coerce correctly' do
it "should coerce correctly" do
settings.setting(:test_int_enum, 1, enum: TestIntEnumClass)
settings.test_int_enum = "2"
settings.refresh!
expect(settings.defaults[:test_int_enum]).to eq(1)
expect(settings.test_int_enum).to eq(2)
end
end
describe 'enum setting' do
describe "enum setting" do
class TestEnumClass
def self.valid_value?(v)
self.values.include?(v)
end
def self.values
['en']
["en"]
end
def self.translate_names?
false
@ -397,48 +394,50 @@ RSpec.describe SiteSettingExtension do
end
before do
settings.setting(:test_enum, 'en', enum: test_enum_class)
settings.setting(:test_enum, "en", enum: test_enum_class)
settings.refresh!
end
it 'should have the correct default' do
expect(settings.test_enum).to eq('en')
it "should have the correct default" do
expect(settings.test_enum).to eq("en")
end
it 'should not hose all_settings' do
it "should not hose all_settings" do
expect(settings.all_settings.detect { |s| s[:setting] == :test_enum }).to be_present
end
it 'should report error when being set other values' do
expect { settings.test_enum = 'not_in_enum' }.to raise_error(Discourse::InvalidParameters)
it "should report error when being set other values" do
expect { settings.test_enum = "not_in_enum" }.to raise_error(Discourse::InvalidParameters)
end
context 'when overridden' do
context "when overridden" do
after :each do
settings.remove_override!(:validated_setting)
end
it 'stores valid values' do
test_enum_class.expects(:valid_value?).with('fr').returns(true)
settings.test_enum = 'fr'
expect(settings.test_enum).to eq('fr')
it "stores valid values" do
test_enum_class.expects(:valid_value?).with("fr").returns(true)
settings.test_enum = "fr"
expect(settings.test_enum).to eq("fr")
end
it 'rejects invalid values' do
test_enum_class.expects(:valid_value?).with('gg').returns(false)
expect { settings.test_enum = 'gg' }.to raise_error(Discourse::InvalidParameters)
it "rejects invalid values" do
test_enum_class.expects(:valid_value?).with("gg").returns(false)
expect { settings.test_enum = "gg" }.to raise_error(Discourse::InvalidParameters)
end
end
end
describe 'a setting with a category' do
describe "a setting with a category" do
before do
settings.setting(:test_setting, 88, category: :tests)
settings.refresh!
end
it "should return the category in all_settings" do
expect(settings.all_settings.find { |s| s[:setting] == :test_setting }[:category]).to eq(:tests)
expect(settings.all_settings.find { |s| s[:setting] == :test_setting }[:category]).to eq(
:tests,
)
end
context "when overidden" do
@ -453,14 +452,16 @@ RSpec.describe SiteSettingExtension do
it "should still have the correct category" do
settings.test_setting = 102
expect(settings.all_settings.find { |s| s[:setting] == :test_setting }[:category]).to eq(:tests)
expect(settings.all_settings.find { |s| s[:setting] == :test_setting }[:category]).to eq(
:tests,
)
end
end
end
describe "setting with a validator" do
before do
settings.setting(:validated_setting, "info@example.com", type: 'email')
settings.setting(:validated_setting, "info@example.com", type: "email")
settings.refresh!
end
@ -470,21 +471,21 @@ RSpec.describe SiteSettingExtension do
it "stores valid values" do
EmailSettingValidator.any_instance.expects(:valid_value?).returns(true)
settings.validated_setting = 'success@example.com'
expect(settings.validated_setting).to eq('success@example.com')
settings.validated_setting = "success@example.com"
expect(settings.validated_setting).to eq("success@example.com")
end
it "rejects invalid values" do
expect {
EmailSettingValidator.any_instance.expects(:valid_value?).returns(false)
settings.validated_setting = 'nope'
settings.validated_setting = "nope"
}.to raise_error(Discourse::InvalidParameters)
expect(settings.validated_setting).to eq("info@example.com")
end
it "allows blank values" do
settings.validated_setting = ''
expect(settings.validated_setting).to eq('')
settings.validated_setting = ""
expect(settings.validated_setting).to eq("")
end
end
@ -492,9 +493,7 @@ RSpec.describe SiteSettingExtension do
it "raises an error" do
settings.setting(:test_setting, 77)
settings.refresh!
expect {
settings.set("provider", "haxxed")
}.to raise_error(Discourse::InvalidParameters)
expect { settings.set("provider", "haxxed") }.to raise_error(Discourse::InvalidParameters)
end
end
@ -505,14 +504,11 @@ RSpec.describe SiteSettingExtension do
end
it "works correctly" do
expect {
settings.get("frogs_in_africa")
}.to raise_error(Discourse::InvalidParameters)
expect { settings.get("frogs_in_africa") }.to raise_error(Discourse::InvalidParameters)
expect(settings.get(:title)).to eq("Discourse v1")
expect(settings.get("title")).to eq("Discourse v1")
end
end
describe ".set_and_log" do
@ -523,9 +519,9 @@ RSpec.describe SiteSettingExtension do
end
it "raises an error when set for an invalid setting name" do
expect {
settings.set_and_log("provider", "haxxed")
}.to raise_error(Discourse::InvalidParameters)
expect { settings.set_and_log("provider", "haxxed") }.to raise_error(
Discourse::InvalidParameters,
)
end
it "scrubs secret setting values from logs" do
@ -561,7 +557,7 @@ RSpec.describe SiteSettingExtension do
describe "hidden" do
before do
settings.setting(:superman_identity, 'Clark Kent', hidden: true)
settings.setting(:superman_identity, "Clark Kent", hidden: true)
settings.refresh!
end
@ -578,22 +574,24 @@ RSpec.describe SiteSettingExtension do
end
it "is present in all_settings when we ask for hidden" do
expect(settings.all_settings(include_hidden: true).find { |s| s[:setting] == :superman_identity }).to be_present
expect(
settings.all_settings(include_hidden: true).find { |s| s[:setting] == :superman_identity },
).to be_present
end
end
describe "global override" do
context "with default_locale" do
it "supports adding a default locale via a global" do
global_setting :default_locale, 'zh_CN'
settings.default_locale = 'en'
expect(settings.default_locale).to eq('zh_CN')
global_setting :default_locale, "zh_CN"
settings.default_locale = "en"
expect(settings.default_locale).to eq("zh_CN")
end
end
context "without global setting" do
before do
settings.setting(:trout_api_key, 'evil')
settings.setting(:trout_api_key, "evil")
settings.refresh!
end
@ -602,27 +600,26 @@ RSpec.describe SiteSettingExtension do
end
it "can return the default value" do
expect(settings.trout_api_key).to eq('evil')
expect(settings.trout_api_key).to eq("evil")
end
it "can overwrite the default" do
settings.trout_api_key = 'tophat'
settings.trout_api_key = "tophat"
settings.refresh!
expect(settings.trout_api_key).to eq('tophat')
expect(settings.trout_api_key).to eq("tophat")
end
end
context "with blank global setting" do
before do
GlobalSetting.stubs(:nada).returns('')
settings.setting(:nada, 'nothing')
GlobalSetting.stubs(:nada).returns("")
settings.setting(:nada, "nothing")
settings.refresh!
end
it "should return default cause nothing is set" do
expect(settings.nada).to eq('nothing')
expect(settings.nada).to eq("nothing")
end
end
context "with a false override" do
@ -637,36 +634,37 @@ RSpec.describe SiteSettingExtension do
end
it "should not trigger any message bus work if you try to set it" do
m = MessageBus.track_publish('/site_settings') do
settings.bool = true
expect(settings.bool).to eq(false)
end
m =
MessageBus.track_publish("/site_settings") do
settings.bool = true
expect(settings.bool).to eq(false)
end
expect(m.length).to eq(0)
end
end
context "with global setting" do
before do
GlobalSetting.stubs(:trout_api_key).returns('purringcat')
settings.setting(:trout_api_key, 'evil')
GlobalSetting.stubs(:trout_api_key).returns("purringcat")
settings.setting(:trout_api_key, "evil")
settings.refresh!
end
it "should return the global setting instead of default" do
expect(settings.trout_api_key).to eq('purringcat')
expect(settings.trout_api_key).to eq("purringcat")
end
it "should return the global setting after a refresh" do
settings.refresh!
expect(settings.trout_api_key).to eq('purringcat')
expect(settings.trout_api_key).to eq("purringcat")
end
it "should add the key to the hidden_settings collection" do
expect(settings.hidden_settings.include?(:trout_api_key)).to eq(true)
['', nil].each_with_index do |setting, index|
["", nil].each_with_index do |setting, index|
GlobalSetting.stubs(:"trout_api_key_#{index}").returns(setting)
settings.setting(:"trout_api_key_#{index}", 'evil')
settings.setting(:"trout_api_key_#{index}", "evil")
settings.refresh!
expect(settings.hidden_settings.include?(:"trout_api_key_#{index}")).to eq(false)
end
@ -680,7 +678,7 @@ RSpec.describe SiteSettingExtension do
describe "secret" do
before do
settings.setting(:superman_identity, 'Clark Kent', secret: true)
settings.setting(:superman_identity, "Clark Kent", secret: true)
settings.refresh!
end
@ -699,78 +697,74 @@ RSpec.describe SiteSettingExtension do
end
end
describe 'locale default overrides are respected' do
describe "locale default overrides are respected" do
before do
settings.setting(:test_override, 'default', locale_default: { zh_CN: 'cn' })
settings.setting(:test_override, "default", locale_default: { zh_CN: "cn" })
settings.refresh!
end
after do
settings.remove_override!(:test_override)
after { settings.remove_override!(:test_override) }
it "ensures the default cache expired after overriding the default_locale" do
expect(settings.test_override).to eq("default")
settings.default_locale = "zh_CN"
expect(settings.test_override).to eq("cn")
end
it 'ensures the default cache expired after overriding the default_locale' do
expect(settings.test_override).to eq('default')
settings.default_locale = 'zh_CN'
expect(settings.test_override).to eq('cn')
end
it 'returns the saved setting even locale default exists' do
expect(settings.test_override).to eq('default')
settings.default_locale = 'zh_CN'
settings.test_override = 'saved'
expect(settings.test_override).to eq('saved')
it "returns the saved setting even locale default exists" do
expect(settings.test_override).to eq("default")
settings.default_locale = "zh_CN"
settings.test_override = "saved"
expect(settings.test_override).to eq("saved")
end
end
describe '.requires_refresh?' do
it 'always refresh default_locale always require refresh' do
describe ".requires_refresh?" do
it "always refresh default_locale always require refresh" do
expect(settings.requires_refresh?(:default_locale)).to be_truthy
end
end
describe '.default_locale' do
it 'is always loaded' do
expect(settings.default_locale).to eq('en')
describe ".default_locale" do
it "is always loaded" do
expect(settings.default_locale).to eq("en")
end
end
describe '.default_locale=' do
it 'can be changed' do
settings.default_locale = 'zh_CN'
expect(settings.default_locale).to eq 'zh_CN'
describe ".default_locale=" do
it "can be changed" do
settings.default_locale = "zh_CN"
expect(settings.default_locale).to eq "zh_CN"
end
it 'refresh!' do
it "refresh!" do
settings.expects(:refresh!)
settings.default_locale = 'zh_CN'
settings.default_locale = "zh_CN"
end
it 'expires the cache' do
settings.default_locale = 'zh_CN'
it "expires the cache" do
settings.default_locale = "zh_CN"
expect(Discourse.cache.exist?(SiteSettingExtension.client_settings_cache_key)).to be_falsey
end
it 'refreshes the client' do
it "refreshes the client" do
Discourse.expects(:request_refresh!)
settings.default_locale = 'zh_CN'
settings.default_locale = "zh_CN"
end
end
describe "get_hostname" do
it "properly extracts the hostname" do
# consider testing this through a public interface, this tests implementation details
expect(settings.send(:get_hostname, "discourse.org")).to eq("discourse.org")
expect(settings.send(:get_hostname, "@discourse.org")).to eq("discourse.org")
expect(settings.send(:get_hostname, "https://discourse.org")).to eq("discourse.org")
end
end
describe '.all_settings' do
describe 'uploads settings' do
it 'should return the right values' do
describe ".all_settings" do
describe "uploads settings" do
it "should return the right values" do
negative_upload_id = [(Upload.minimum(:id) || 0) - 1, -10].min
system_upload = Fabricate(:upload, id: negative_upload_id)
settings.setting(:logo, system_upload.id, type: :upload)
@ -791,41 +785,39 @@ RSpec.describe SiteSettingExtension do
end
end
describe '.client_settings_json_uncached' do
it 'should return the right json value' do
describe ".client_settings_json_uncached" do
it "should return the right json value" do
upload = Fabricate(:upload)
settings.setting(:upload_type, upload.id.to_s, type: :upload, client: true)
settings.setting(:string_type, 'haha', client: true)
settings.setting(:string_type, "haha", client: true)
settings.refresh!
expect(settings.client_settings_json_uncached).to eq(
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"#{upload.url}","string_type":"haha"}|
%Q|{"default_locale":"#{SiteSetting.default_locale}","upload_type":"#{upload.url}","string_type":"haha"}|,
)
end
it 'settings with html type are not sanitized' do
settings.setting(:with_html, '<script></script>rest', type: :html, client: true)
it "settings with html type are not sanitized" do
settings.setting(:with_html, "<script></script>rest", type: :html, client: true)
client_settings = JSON.parse settings.client_settings_json_uncached
expect(client_settings['with_html']).to eq('<script></script>rest')
expect(client_settings["with_html"]).to eq("<script></script>rest")
end
end
describe '.setup_methods' do
describe 'for uploads site settings' do
describe ".setup_methods" do
describe "for uploads site settings" do
fab!(:upload) { Fabricate(:upload) }
fab!(:upload2) { Fabricate(:upload) }
it 'should return the upload record' do
it "should return the upload record" do
settings.setting(:some_upload, upload.id.to_s, type: :upload)
expect(settings.some_upload).to eq(upload)
# Ensure that we cache the upload record
expect(settings.some_upload.object_id).to eq(
settings.some_upload.object_id
)
expect(settings.some_upload.object_id).to eq(settings.some_upload.object_id)
settings.some_upload = upload2