otwarchive-symphonyarchive/spec/helpers/skins_helper_spec.rb

78 lines
2.1 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
# frozen_string_literal: true
require "spec_helper"
describe SkinsHelper do
describe "#current_skin" do
before do
allow(helper).to receive(:current_user)
allow(helper).to receive(:logged_in_as_admin?).and_return(false)
allow(helper).to receive(:logged_in?).and_return(false)
admin_setting = AdminSetting.default
admin_setting.default_skin = Skin.default
admin_setting.save(validate: false)
end
context "when the parameters include a skin id" do
before do
params[:site_skin] = skin.id
end
context "when the skin is applied" do
let(:skin) { create(:skin, :public) }
it "returns the skin matching the parameter" do
expect(helper.current_skin).to eq(skin)
end
end
context "when the skin is not applied" do
let(:skin) { create(:skin) }
it "falls back to other options" do
expect(helper.current_skin).to eq(Skin.default)
end
end
end
context "when the current user has a skin set for the session" do
before do
allow(helper).to receive(:current_user).and_return(create(:user))
allow(helper).to receive(:logged_in?).and_return(true)
session[:site_skin] = skin.id
end
context "when the skin is applied" do
let(:skin) { create(:skin, :public) }
it "returns the skin matching the session attribute" do
expect(helper.current_skin).to eq(skin)
end
end
context "when the skin is not applied" do
# Non-public skin with a different author
let(:skin) { create(:skin) }
it "falls back to other options" do
expect(helper.current_skin).to eq(Skin.default)
end
end
end
context "when the current user has a skin preference set" do
let(:skin) { create(:skin) }
let(:user) { skin.author }
before do
user.preference.update!(skin: skin)
allow(helper).to receive(:current_user).and_return(user)
end
it "returns the preferred skin" do
expect(helper.current_skin).to eq(skin)
end
end
end
end