Sha256: 72c54717f13940eb2bcf3647f701ec72cb9f8270880d062614b4b88f24a4a1fb

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

require_relative 'helper'
require 'sidekiq/scheduled'

class TestScheduling < Sidekiq::Test
  describe 'middleware' do
    before do
      Sidekiq::Client.instance_variable_set(:@default, nil)
      @redis = Minitest::Mock.new
      # Ugh, this is terrible.
      Sidekiq.instance_variable_set(:@redis, @redis)
      def @redis.multi; [yield] * 2 if block_given?; end
      def @redis.with; yield self; end
    end

    after do
      Sidekiq::Client.instance_variable_set(:@default, nil)
      Sidekiq.instance_variable_set(:@redis, REDIS)
    end

    class ScheduledWorker
      include Sidekiq::Worker
      sidekiq_options :queue => :custom_queue
      def perform(x)
      end
    end

    it 'schedules a job via interval' do
      @redis.expect :zadd, true, ['schedule', Array]
      assert ScheduledWorker.perform_in(600, 'mike')
      @redis.verify
    end

    it 'schedules a job via timestamp' do
      @redis.expect :zadd, true, ['schedule', Array]
      assert ScheduledWorker.perform_in(5.days.from_now, 'mike')
      @redis.verify
    end

    it 'schedules job right away on negative timestamp/interval' do
      @redis.expect :sadd,  true, ['queues', 'custom_queue']
      @redis.expect :lpush, true, ['queue:custom_queue', Array]
      assert ScheduledWorker.perform_in(-300, 'mike')
      @redis.verify
    end

    it 'schedules multiple jobs at once' do
      @redis.expect :zadd, true, ['schedule', Array]
      assert Sidekiq::Client.push_bulk('class' => ScheduledWorker, 'args' => [['mike'], ['mike']], 'at' => 600)
      @redis.verify
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sidekiq-3.3.2 test/test_scheduling.rb
sidekiq-3.3.1 test/test_scheduling.rb