aboutsummaryrefslogblamecommitdiffstats
path: root/activejob/test/cases/queue_adapter_test.rb
blob: fb3fdc392f46482523a5780ab53327cf1f8036db (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

                













                            











                                                                              

                            



                                                               




















                                                                                                                                                 
   
require 'helper'

module ActiveJob
  module QueueAdapters
    class StubOneAdapter
      def enqueue(*); end
      def enqueue_at(*); end
    end

    class StubTwoAdapter
      def enqueue(*); end
      def enqueue_at(*); end
    end
  end
end

class QueueAdapterTest < ActiveJob::TestCase
  test 'should forbid nonsense arguments' do
    assert_raises(ArgumentError) { ActiveJob::Base.queue_adapter = Mutex }
    assert_raises(ArgumentError) { ActiveJob::Base.queue_adapter = Mutex.new }
  end

  test 'should warn on passing an adapter class' do
    klass = Class.new do
      def self.name
        'fake'
      end

      def enqueue(*); end
      def enqueue_at(*); end
    end

    assert_deprecated { ActiveJob::Base.queue_adapter = klass }
  end

  test 'should allow overriding the queue_adapter at the child class level without affecting the parent or its sibling' do
    base_queue_adapter = ActiveJob::Base.queue_adapter

    child_job_one = Class.new(ActiveJob::Base)
    child_job_one.queue_adapter = :stub_one

    assert_not_equal ActiveJob::Base.queue_adapter, child_job_one.queue_adapter
    assert_kind_of ActiveJob::QueueAdapters::StubOneAdapter, child_job_one.queue_adapter

    child_job_two = Class.new(ActiveJob::Base)
    child_job_two.queue_adapter = :stub_two

    assert_kind_of ActiveJob::QueueAdapters::StubTwoAdapter, child_job_two.queue_adapter
    assert_kind_of ActiveJob::QueueAdapters::StubOneAdapter, child_job_one.queue_adapter, "child_job_one's queue adapter should remain unchanged"
    assert_equal base_queue_adapter, ActiveJob::Base.queue_adapter, "ActiveJob::Base's queue adapter should remain unchanged"

    child_job_three = Class.new(ActiveJob::Base)

    assert_not_nil child_job_three.queue_adapter
  end
end