otwarchive-symphonyarchive/spec/requests/skins_n_plus_one_spec.rb

98 lines
2.1 KiB
Ruby
Raw Normal View History

2026-03-11 22:22:11 +00:00
# frozen_string_literal: true
require "spec_helper"
describe "n+1 queries in the skins controller" do
include LoginMacros
describe "#index", n_plus_one: true do
context "when displaying a user's work skins" do
let!(:user) { create(:user) }
populate do |n|
create_list(:work_skin, n, :private, author: user)
end
subject do
proc do
get user_skins_path(user_id: user), params: { "skin_type" => "WorkSkin" }
end
end
before do
fake_login_known_user(user)
end
warmup { subject.call }
it "produces a constant number of queries" do
expect { subject.call }
.to perform_constant_number_of_queries
end
end
context "when displaying a user's site skins" do
let!(:user) { create(:user) }
populate do |n|
create_list(:skin, n, author: user)
end
subject do
proc do
get user_skins_path(user_id: user), params: { "skin_type" => "Site" }
end
end
before do
fake_login_known_user(user)
end
warmup { subject.call }
it "produces a constant number of queries" do
expect { subject.call }
.to perform_constant_number_of_queries
end
end
context "when displaying public work skins" do
populate do |n|
create_list(:work_skin, n, :public)
end
subject do
proc do
get skins_path, params: { "skin_type" => "WorkSkin" }
end
end
warmup { subject.call }
it "produces a constant number of queries" do
expect { subject.call }
.to perform_constant_number_of_queries
end
end
context "when displaying public site skins" do
populate do |n|
create_list(:skin, n, :public)
end
subject do
proc do
get skins_path, params: { "skin_type" => "Site" }
end
end
warmup { subject.call }
it "produces a constant number of queries" do
expect { subject.call }
.to perform_constant_number_of_queries
end
end
end
end