38 lines
996 B
Ruby
38 lines
996 B
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
require "spec_helper"
|
||
|
|
|
||
|
|
describe "n+1 queries in the collection items controller" do
|
||
|
|
include LoginMacros
|
||
|
|
|
||
|
|
describe "#index" do
|
||
|
|
context "when viewing collection items for a specific user", n_plus_one: true do
|
||
|
|
let!(:user) { create(:user) }
|
||
|
|
|
||
|
|
populate do |n|
|
||
|
|
create_list(:work, n, authors: [user.default_pseud]).each do |work|
|
||
|
|
collection_item = create(:collection_item, item: work)
|
||
|
|
collection_item.collection.icon.attach(io: File.open(Rails.root.join("features/fixtures/icon.gif")), filename: "icon.gif", content_type: "image/gif")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
subject do
|
||
|
|
proc do
|
||
|
|
get user_collection_items_path(user_id: user)
|
||
|
|
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
|
||
|
|
end
|
||
|
|
end
|