Sha256: 16ba7379f60315f5f5586ad0fa853430aabe6b3d771c045978dd5c2f334713d4

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

require File.dirname(__FILE__) + '/../test_helper'

class ResqueTest < Test::Unit::TestCase

  context "Resque" do
    setup do
      Resque.redis.flushall
      assert_nil Resque.redis.get(OneHourThrottledJob.key)
      @bogus_args = "bogus_arg"
    end

    context "#enqueue" do
      should "add a throttled job key to the set with the proper TTL (Expire)" do
        Resque.expects(:enqueue_without_throttle).returns(true) 
        assert Resque.enqueue(IdentifierThrottledJob, @bogus_args)
        assert(
          Resque.redis.keys('*').include?(
            "resque-throttle:IdentifierThrottledJob:my_bogus_arg"
          )
        )
        assert_equal 3600, Resque.redis.ttl(IdentifierThrottledJob.key(@bogus_args))
      end
      
      context "job has not reached throttle limit" do
        should "not add another job to the queue and raise a throttled exception" do
          Resque.expects(:enqueue_without_throttle).once
          assert_raises(Resque::ThrottledError) { 2.times { Resque.enqueue(OneHourThrottledJob, @bogus_args) } }
        end
      end

      should "enqueue a job without throttling if the job is disabled" do
        Resque.expects(:enqueue_without_throttle).twice
        2.times { Resque.enqueue(DisabledThrottledJob, @bogus_args) }
      end
      
      should "silently throttle a job if that's how resque-throttle is configured" do
        Resque.expects(:enqueue_without_throttle).once
        2.times { Resque.enqueue(SilentThrottledJob, @bogus_args) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fhwang-resque-throttle-0.3.0 test/resque/resque_test.rb