PERF: Eradicate N+1 queries from the theme admin page

This commit is contained in:
David Taylor
2018-12-20 17:13:05 +00:00
committed by Sam
parent 2909e7fbdf
commit 7feabd9e49
6 changed files with 34 additions and 7 deletions

View File

@ -3,8 +3,8 @@ require 'theme_settings_manager'
describe ThemeSettingsManager do
let(:theme) { Fabricate(:theme) }
let(:theme_settings) do
theme = Fabricate(:theme)
yaml = File.read("#{Rails.root}/spec/fixtures/theme_settings/valid_settings.yaml")
theme.set_field(target: :settings, name: "yaml", value: yaml)
theme.save!
@ -37,12 +37,15 @@ describe ThemeSettingsManager do
expect(bool_setting.value).to eq(true) # default
bool_setting.value = "true"
theme.reload
expect(bool_setting.value).to eq(true)
bool_setting.value = "falsse" # intentionally misspelled
theme.reload
expect(bool_setting.value).to eq(false)
bool_setting.value = true
theme.reload
expect(bool_setting.value).to eq(true)
end
end
@ -51,15 +54,19 @@ describe ThemeSettingsManager do
it "is always an integer" do
int_setting = find_by_name(:integer_setting)
int_setting.value = 1.6
theme.reload
expect(int_setting.value).to eq(1)
int_setting.value = "4.3"
theme.reload
expect(int_setting.value).to eq(4)
int_setting.value = "10"
theme.reload
expect(int_setting.value).to eq(10)
int_setting.value = "text"
theme.reload
expect(int_setting.value).to eq(0)
end
@ -69,9 +76,11 @@ describe ThemeSettingsManager do
expect { int_setting.value = 61 }.to raise_error(Discourse::InvalidParameters)
int_setting.value = 60
theme.reload
expect(int_setting.value).to eq(60)
int_setting.value = 1
theme.reload
expect(int_setting.value).to eq(1)
end
end
@ -80,12 +89,15 @@ describe ThemeSettingsManager do
it "is always a float" do
float_setting = find_by_name(:float_setting)
float_setting.value = 1.615
theme.reload
expect(float_setting.value).to eq(1.615)
float_setting.value = "3.1415"
theme.reload
expect(float_setting.value).to eq(3.1415)
float_setting.value = 10
theme.reload
expect(float_setting.value).to eq(10)
end
@ -96,6 +108,7 @@ describe ThemeSettingsManager do
expect { float_setting.value = "text" }.to raise_error(Discourse::InvalidParameters)
float_setting.value = 9.521
theme.reload
expect(float_setting.value).to eq(9.521)
end
end
@ -106,9 +119,11 @@ describe ThemeSettingsManager do
expect { string_setting.value = "a" }.to raise_error(Discourse::InvalidParameters)
string_setting.value = "ab"
theme.reload
expect(string_setting.value).to eq("ab")
string_setting.value = "ab" * 10
theme.reload
expect(string_setting.value).to eq("ab" * 10)
expect { string_setting.value = ("a" * 21) }.to raise_error(Discourse::InvalidParameters)