mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
1f8558fa27
This allows different `queue_adapters` to be used in each `ActiveJob` class heirarchy. Previously, all subclasses used a single global queue adapter.
56 lines
1.7 KiB
Ruby
56 lines
1.7 KiB
Ruby
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
|