diff options
Diffstat (limited to 'vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb')
-rw-r--r-- | vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb b/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb index 84a0203b683..d6701c7c7e1 100644 --- a/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb +++ b/vendor/gems/sidekiq-reliable-fetch/spec/semi_reliable_fetch_spec.rb @@ -7,10 +7,45 @@ describe Sidekiq::SemiReliableFetch do include_examples 'a Sidekiq fetcher' describe '#retrieve_work' do - context 'timeout config' do - let(:queues) { ['stuff_to_do'] } - let(:fetcher) { described_class.new(queues: queues) } + let(:queues) { ['stuff_to_do'] } + let(:options) { { queues: queues } } + let(:fetcher) { described_class.new(options) } + + context 'namespace config' do + let(:options) { { queues: queues, namespace: 'namespaced' } } + + before do + Sidekiq.redis do |conn| + conn.rpush('queue:stuff_to_do', 'msg1') + conn.rpush('namespaced:queue:stuff_to_do', 'msg2') + end + end + + it 'runs brpop on both namespaced and non-namespaced' do + jobs = (1..2).map { fetcher.retrieve_work&.job } + + expect(jobs).to match_array(['msg1', 'msg2']) + end + end + context 'alternative_store config' do + let(:store) { Sidekiq::RedisConnection.create(url: REDIS_URL, size: 10) } + let(:options) { { queues: queues, alternative_store: store } } + + it 'connects using alternative store' do + Sidekiq.redis do |connection| + expect(connection).not_to receive(:brpop) + end + + store.with do |connection| + expect(connection).to receive(:brpop).with("queue:stuff_to_do", { timeout: 2 }).once.and_call_original + end + + fetcher.retrieve_work + end + end + + context 'timeout config' do before do stub_env('SIDEKIQ_SEMI_RELIABLE_FETCH_TIMEOUT', timeout) end |