Sha256: 415199809da0ad64cb296932dc87ce64fb8d067199ca93e6e3000c0e36ee84bd

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

describe Sidekiq::QueueMetrics::Storage do
  let(:redis_connection) { Redis.new }
  let(:queue) { 'mailer_queue' }
  let(:job) { {'queue' => queue, 'args' => [1]} }

  before(:all) do
    Sidekiq.redis = ConnectionPool.new { redis_connection }
  end

  before { redis_connection.flushall }

  describe '#add_failed_job' do
    it 'should add first failed job' do
      expect do
        Sidekiq::QueueMetrics::Storage.add_failed_job(job)
      end.to change{ Sidekiq::QueueMetrics::Storage.failed_jobs(queue).length }.from(0).to(1)
    end

    it 'should add failed job to existing jobs' do
      Sidekiq::QueueMetrics::Storage.add_failed_job(job)

      expect do
        Sidekiq::QueueMetrics::Storage.add_failed_job({'queue' => queue, 'args' => [2]})
      end.to change{ Sidekiq::QueueMetrics::Storage.failed_jobs(queue).length }.from(1).to(2)
    end

    it 'should delete old job when failed jobs limit has reached' do
      Sidekiq::QueueMetrics::Storage.add_failed_job(job)
      Sidekiq::QueueMetrics::Storage.add_failed_job({'queue' => queue, 'args' => [2]})

      expect do
        Sidekiq::QueueMetrics::Storage.add_failed_job({'queue' => queue, 'args' => [3]}, 2)
      end.to_not change { Sidekiq::QueueMetrics::Storage.failed_jobs(queue).length }
    end
  end

  describe '#failed_jobs' do
    context 'when failed jobs are not present' do
      it 'should return failed jobs for a given queue' do
        expect(Sidekiq::QueueMetrics::Storage.failed_jobs(queue)).to be_empty
      end
    end

    context 'when failed jobs are present' do
      it 'should return failed jobs for a given queue' do
        Sidekiq::QueueMetrics::Storage.add_failed_job(job)

        expect(Sidekiq::QueueMetrics::Storage.failed_jobs(queue)).to eq([job])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sidekiq_queue_metrics-3.0.0 spec/lib/sidekiq_queue_metrics/storage_spec.rb