otwarchive-symphonyarchive/spec/models/indexing/index_queue_spec.rb
2026-03-11 22:22:11 +00:00

77 lines
2.2 KiB
Ruby

require 'spec_helper'
describe IndexQueue do
it "should build correct keys" do
expect(IndexQueue.get_key('StatCounter', :stats)).to eq("index:stat_counter:stats")
end
it "should enqueue objects" do
work = Work.new
work.id = 34
IndexQueue.enqueue(work, :background)
expect(IndexQueue.new("index:work:background").ids).to eq(['34'])
end
it "should enqueue ids" do
IndexQueue.enqueue_id('Bookmark', 12, :background)
expect(IndexQueue.new("index:bookmark:background").ids).to eq(['12'])
end
it "should have ids added to it" do
iq = IndexQueue.new("index:work:main")
iq.add_id(1)
iq.add_id(2)
expect(iq.ids).to eq(['1', '2'])
end
it "should create subqueues when run" do
iq = IndexQueue.new("index:work:main")
iq.add_id(1)
iq.run
expect(IndexQueue::REDIS.exists("index:work:main")).to be_falsey
end
describe "#run" do
it "should call the work indexer" do
work = create(:work)
expect(WorkIndexer).to receive(:new).with(
array_including(work.id.to_s)
).and_call_original
IndexQueue.new("index:work:main").run
end
it "should call the bookmark indexer" do
bookmark = create(:bookmark)
expect(BookmarkIndexer).to receive(:new).with(
array_including(bookmark.id.to_s)
).and_call_original
IndexQueue.new("index:bookmark:main").run
end
it "should call the tag indexer" do
tag = create(:freeform)
expect(TagIndexer).to receive(:new).with(
array_including(tag.id.to_s)
).and_call_original
IndexQueue.new("index:tag:main").run
end
it "should call the pseud indexer" do
pseud = create(:user).default_pseud
expect(PseudIndexer).to receive(:new).with(
array_including(pseud.id.to_s)
).and_call_original
IndexQueue.new("index:pseud:main").run
end
it "should call the stat counter indexer" do
stats = create(:work).stat_counter
stats.update!(hit_count: 10_000)
expect(StatCounterIndexer).to receive(:new).with(
array_including(stats.id.to_s)
).at_least(:once).and_call_original
IndexQueue.new("index:stat_counter:stats").run
end
end
end