Files
discourse/spec/requests/safe_mode_controller_spec.rb
David Taylor 4d0a817f40 DEV: Compile 'common' CSS into own assets (#31416)
Previously we were compiling core and theme CSS into two targets:
Desktop and Mobile. The majority of both files was the 'common' css.
This commit splits those common styles into their own targets so that
there is less duplication. This should improve compilation times + cache
reuse, as well as opening the door for experiments with
media-query-based mobile-modes.

The only functional change is that we can no longer use `@extend` to
copy 'common' rules in core to mobile/desktop. This is probably for the
best. Duplication and/or mixins are a more native-css pattern for this.

Plugins already have a common / mobile / desktop pattern, so are
unchanged by this commit.
2025-05-01 10:44:49 +01:00

56 lines
1.6 KiB
Ruby

# frozen_string_literal: true
RSpec.describe SafeModeController do
describe "index" do
it "never includes customizations" do
theme = Fabricate(:theme)
theme.set_field(target: :common, name: "header", value: "My Custom Header")
theme.set_field(target: :common, name: :scss, value: "body { background: red; }")
theme.save!
theme.set_default!
Fabricate(:admin) # Avoid wizard page
get "/"
expect(response.status).to eq(200)
expect(response.body).to include("data-theme-id=\"#{theme.id}\"")
get "/safe-mode"
expect(response.status).to eq(200)
expect(response.body).not_to include("My Custom Header")
expect(response.body).not_to include("data-theme-id=\"#{theme.id}\"")
end
it "sets the robots header" do
get "/safe-mode"
expect(response.headers["X-Robots-Tag"]).to eq("noindex, nofollow")
end
end
describe "enter" do
context "when no params are given" do
it "should redirect back to safe mode page" do
post "/safe-mode"
expect(response.status).to redirect_to(safe_mode_path)
end
end
context "when safe mode is not enabled" do
it "should raise an error" do
SiteSetting.enable_safe_mode = false
post "/safe-mode"
expect(response.status).to eq(404)
end
it "doesn't raise an error for staff" do
SiteSetting.enable_safe_mode = false
sign_in(Fabricate(:moderator))
post "/safe-mode"
expect(response.status).to redirect_to(safe_mode_path)
end
end
end
end