52 lines
1.2 KiB
Ruby
52 lines
1.2 KiB
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
require "spec_helper"
|
||
|
|
|
||
|
|
describe "n+1 queries in the people controller" do
|
||
|
|
describe "#index", n_plus_one: true do
|
||
|
|
context "when viewing people in a collection" do
|
||
|
|
let!(:collection) { create(:collection) }
|
||
|
|
|
||
|
|
populate do |n|
|
||
|
|
create_list(:collection_participant, n, collection: collection)
|
||
|
|
end
|
||
|
|
|
||
|
|
subject do
|
||
|
|
proc do
|
||
|
|
get collection_people_path(collection_id: collection)
|
||
|
|
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
|
||
|
|
|
||
|
|
describe "#search", n_plus_one: true do
|
||
|
|
context "when there are search results" do
|
||
|
|
populate do |n|
|
||
|
|
PseudIndexer.prepare_for_testing
|
||
|
|
create_list(:pseud, n, name: "nplusone")
|
||
|
|
run_all_indexing_jobs
|
||
|
|
end
|
||
|
|
|
||
|
|
subject do
|
||
|
|
proc do
|
||
|
|
get search_people_path, params: { "people_search" => { "name" => "nplusone" } }
|
||
|
|
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
|