Sha256: ae70c6ad286e9882dce90c0684a904dbfab31a5ae922609825b1f4111717482d

Contents?: true

Size: 1.21 KB

Versions: 4

Compression:

Stored size: 1.21 KB

Contents

require 'spec_helper'

describe Sufia::Resque::Queue do
  let(:subject) { Sufia::Resque::Queue.new "test_queue" }
  let(:job) { double('job') }

  context "with no retries" do
    it "queues the job" do
      expect(::Resque).to receive(:enqueue_to).once.and_return(true)
      subject.push(job)
    end
  end

  context 'when one run times out' do
    before do
      call_count = 0
      allow(::Resque).to receive(:enqueue_to) do
        call_count += 1
        call_count == 1 ? raise(Redis::TimeoutError) : true
      end
    end

    it 'retries the job' do
      expect(::Resque).to receive(:enqueue_to).twice
      subject.push(job)
    end
  end

  context 'when a job times out three times' do
    before do
      allow(::Resque).to receive(:enqueue_to).exactly(3).times.and_raise(Redis::TimeoutError)
    end

    it 'raises an error' do
      expect { subject.push(job) }.to raise_error Redis::TimeoutError
    end
  end

  context 'with no connection to Redis' do
    before do
      allow(::Resque).to receive(:enqueue_to).once.and_raise(Redis::CannotConnectError)
    end

    it 'logs an error' do
      expect(ActiveFedora::Base.logger).to receive(:error).with("Redis is down!")
      subject.push(job)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sufia-6.2.0 spec/jobs/sufia_resque_queue_spec.rb
sufia-6.1.0 spec/jobs/sufia_resque_queue_spec.rb
sufia-6.0.0 spec/jobs/sufia_resque_queue_spec.rb
sufia-6.0.0.rc4 spec/jobs/sufia_resque_queue_spec.rb