Sha256: c4fe3c66621fdb72028142a76090299e1b6296749b7df4d79778c5257b9a777c

Contents?: true

Size: 1.92 KB

Versions: 1

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'
require 'sidekiq'
require 'rekiq/worker'

describe Rekiq::Worker do
  class ExampleWorker
    include Sidekiq::Worker
  end

  context 'Class includes Sidekiq::Worker module' do
    it 'responds to perform_recurringly' do
      ExampleWorker.respond_to? :perform_recurringly
    end

    describe '.perform_recurringly' do
      context 'scheduled one hour from now' do
        let(:time)     { Time.now + 3600 }
        let(:schedule) { IceCube::Schedule.new(time) }
        before do
          @jid = ExampleWorker.perform_recurringly(schedule)
        end

        it 'returns created jid' do
          expect(@jid).not_to be_nil
        end

        it 'schedules worker' do
          expect(ExampleWorker.jobs.count).to eq(1)
        end

        it 'schedules worker for one hour from now' do
          expect(ExampleWorker.jobs[0]['at']).to eq(time.to_f)
        end
      end

      context 'scheduled one hour from now ' \
              'shift set to minus 5 minutes' do
        let(:time)     { Time.now + 3600 }
        let(:schedule) { IceCube::Schedule.new(time) }
        let(:shift)    { -5 * 60 }
        before do
          @jid = ExampleWorker.perform_recurringly(schedule) do |options|
              options.shift = shift
            end
        end

        it 'returns created job id' do
          expect(@jid).not_to be_nil
        end

        it 'schedules worker' do
          expect(ExampleWorker.jobs.count).to eq(1)
        end

        it 'yields once' do
          expect do |b|
            ExampleWorker.perform_recurringly(schedule, &b)
          end.to yield_control.once
        end

        it 'sets shift in job' do
          hash = ExampleWorker.jobs[0]['rq:job']

          expect(hash['sft']).to eq(shift)
        end

        it 'schedules worker for one hour minus 5 minutes from now' do
          expect(ExampleWorker.jobs[0]['at']).to eq(time.to_f + shift)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rekiq-0.0.1 spec/rekiq/worker_spec.rb