mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 16:54:06 +08:00
ce2388e40b
This keeps coming up in user testing as something we want to get rid of. The `navigation_menu` setting has been set to sidebar by default for some time now, and we are rolling out admin sidebar widely. It just doesn't make sense to let people turn this off in the first step of the wizard -- we _want_ people to use the sidebar.
175 lines
5.7 KiB
Ruby
175 lines
5.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "wizard"
|
|
require "wizard/builder"
|
|
require "global_path"
|
|
|
|
class GlobalPathInstance
|
|
extend GlobalPath
|
|
end
|
|
|
|
RSpec.describe Wizard::Builder do
|
|
let(:moderator) { Fabricate.build(:moderator) }
|
|
let(:wizard) { Wizard::Builder.new(moderator).build }
|
|
|
|
it "returns a wizard with steps when enabled" do
|
|
SiteSetting.wizard_enabled = true
|
|
|
|
expect(wizard).to be_present
|
|
expect(wizard.steps).to be_present
|
|
end
|
|
|
|
it "returns a wizard without steps when enabled, but not staff" do
|
|
wizard = Wizard::Builder.new(Fabricate.build(:user)).build
|
|
expect(wizard).to be_present
|
|
expect(wizard.steps).to be_blank
|
|
end
|
|
|
|
it "returns a wizard without steps when disabled" do
|
|
SiteSetting.wizard_enabled = false
|
|
|
|
expect(wizard).to be_present
|
|
expect(wizard.steps).to be_blank
|
|
end
|
|
|
|
describe "introduction" do
|
|
let(:introduction_step) { wizard.steps.find { |s| s.id == "introduction" } }
|
|
|
|
it "should not prefill default site setting values" do
|
|
fields = introduction_step.fields
|
|
title_field = fields.first
|
|
description_field = fields.second
|
|
|
|
expect(title_field.id).to eq("title")
|
|
expect(title_field.value).to eq("")
|
|
expect(description_field.id).to eq("site_description")
|
|
expect(description_field.value).to eq("")
|
|
end
|
|
|
|
it "should prefill overridden site setting values" do
|
|
SiteSetting.title = "foobar"
|
|
SiteSetting.site_description = "lorem ipsum"
|
|
SiteSetting.contact_email = "foobar@example.com"
|
|
|
|
fields = introduction_step.fields
|
|
title_field = fields.first
|
|
description_field = fields.second
|
|
|
|
expect(title_field.id).to eq("title")
|
|
expect(title_field.value).to eq("foobar")
|
|
expect(description_field.id).to eq("site_description")
|
|
expect(description_field.value).to eq("lorem ipsum")
|
|
end
|
|
end
|
|
|
|
describe "privacy step" do
|
|
let(:privacy_step) { wizard.steps.find { |s| s.id == "privacy" } }
|
|
|
|
it "should set the right default value for the fields" do
|
|
SiteSetting.login_required = true
|
|
SiteSetting.invite_only = false
|
|
SiteSetting.must_approve_users = true
|
|
SiteSetting.chat_enabled = true if defined?(::Chat)
|
|
SiteSetting.navigation_menu = NavigationMenuSiteSetting::SIDEBAR
|
|
|
|
fields = privacy_step.fields
|
|
login_required_field = fields.first
|
|
invite_only_field = fields.second
|
|
must_approve_users_field = fields.third
|
|
chat_enabled_field = fields.second_to_last if defined?(::Chat)
|
|
navigation_menu_field = fields.last
|
|
|
|
count = defined?(::Chat) ? 4 : 3
|
|
expect(fields.length).to eq(count)
|
|
expect(login_required_field.id).to eq("login_required")
|
|
expect(login_required_field.value).to eq(true)
|
|
expect(invite_only_field.id).to eq("invite_only")
|
|
expect(invite_only_field.value).to eq(false)
|
|
expect(must_approve_users_field.id).to eq("must_approve_users")
|
|
expect(must_approve_users_field.value).to eq(true)
|
|
if defined?(::Chat)
|
|
expect(chat_enabled_field.id).to eq("chat_enabled")
|
|
expect(chat_enabled_field.value).to eq(true)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "styling" do
|
|
let(:styling_step) { wizard.steps.find { |s| s.id == "styling" } }
|
|
let(:font_field) { styling_step.fields[1] }
|
|
fab!(:theme)
|
|
let(:colors_field) { styling_step.fields.first }
|
|
|
|
it "has the full list of available fonts" do
|
|
expect(font_field.choices.size).to eq(DiscourseFonts.fonts.size)
|
|
end
|
|
|
|
context "with colors" do
|
|
context "when the default theme has not been override" do
|
|
before { SiteSetting.find_by(name: "default_theme_id").destroy! }
|
|
|
|
it "should set the right default values" do
|
|
expect(colors_field.required).to eq(true)
|
|
expect(colors_field.value).to eq(ColorScheme::LIGHT_THEME_ID)
|
|
end
|
|
end
|
|
|
|
context "when the default theme has been override and the color scheme doesn't have a base scheme" do
|
|
let(:color_scheme) { Fabricate(:color_scheme, base_scheme_id: nil) }
|
|
|
|
before do
|
|
SiteSetting.default_theme_id = theme.id
|
|
theme.update(color_scheme: color_scheme)
|
|
end
|
|
|
|
it "fallbacks to the color scheme name" do
|
|
expect(colors_field.required).to eq(false)
|
|
expect(colors_field.value).to eq(color_scheme.name)
|
|
end
|
|
end
|
|
|
|
context "when the default theme has been overridden by a theme without a color scheme" do
|
|
before { theme.set_default! }
|
|
|
|
it "should set the right default values" do
|
|
expect(colors_field.required).to eq(false)
|
|
expect(colors_field.value).to eq("Light")
|
|
end
|
|
end
|
|
|
|
context "when the default theme has been overridden by a theme with a color scheme" do
|
|
before do
|
|
theme.update(color_scheme_id: ColorScheme.find_by_name("Dark").id)
|
|
theme.set_default!
|
|
end
|
|
|
|
it "should set the right default values" do
|
|
expect(colors_field.required).to eq(false)
|
|
expect(colors_field.value).to eq("Dark")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "branding" do
|
|
let(:branding_step) { wizard.steps.find { |s| s.id == "branding" } }
|
|
|
|
it "should set the right default value for the fields" do
|
|
upload = Fabricate(:upload)
|
|
upload2 = Fabricate(:upload)
|
|
|
|
SiteSetting.logo = upload
|
|
SiteSetting.logo_small = upload2
|
|
|
|
fields = branding_step.fields
|
|
logo_field = fields.first
|
|
logo_small_field = fields.last
|
|
|
|
expect(logo_field.id).to eq("logo")
|
|
expect(logo_field.value).to eq(GlobalPathInstance.full_cdn_url(upload.url))
|
|
expect(logo_small_field.id).to eq("logo_small")
|
|
expect(logo_small_field.value).to eq(GlobalPathInstance.full_cdn_url(upload2.url))
|
|
end
|
|
end
|
|
end
|