42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
|
|
require "spec_helper"
|
||
|
|
|
||
|
|
describe WorkIndexer, work_search: true do
|
||
|
|
describe "#index_documents" do
|
||
|
|
let(:work) { create(:work) }
|
||
|
|
|
||
|
|
context "when a work in the batch has no stat_counter" do
|
||
|
|
let(:indexer) { WorkIndexer.new([work.id]) }
|
||
|
|
|
||
|
|
before { work.stat_counter.delete }
|
||
|
|
|
||
|
|
it "doesn't error" do
|
||
|
|
expect { indexer.index_documents }.not_to raise_exception
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when there are no IDs in the batch" do
|
||
|
|
let(:indexer) { WorkIndexer.new([]) }
|
||
|
|
|
||
|
|
it "returns nil" do
|
||
|
|
expect(indexer.index_documents).to be_nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "with multiple works in a batch", :n_plus_one do
|
||
|
|
let(:relationships) do
|
||
|
|
rel1 = create(:canonical_relationship, name: "aa/bb")
|
||
|
|
syn = create(:relationship, name: "a/b", merger: rel1)
|
||
|
|
rel2 = create(:relationship, name: "test")
|
||
|
|
[syn, rel2] # so that Work#otp doesn't take an early return
|
||
|
|
end
|
||
|
|
populate { |n| create_list(:work, n, relationships: relationships) }
|
||
|
|
|
||
|
|
it "generates a constant number of database queries" do
|
||
|
|
expect do
|
||
|
|
WorkIndexer.new(Work.ids).index_documents
|
||
|
|
end.to perform_constant_number_of_queries
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|