# 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.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
  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