rails/activejob/test/cases/queue_naming_test.rb
Blake Gentry 4a1dbba108 ActiveJob: allow blank queue names
As discussed in #17195, Que uses blank queue names by default for
performance reasons. At the very least, ActiveJob should allow users to
choose "" as their queue name. This commit allows blank queue names, as
well as tests to make sure that nil queue names still use the default.
2014-10-09 19:42:43 -07:00

82 lines
2.2 KiB
Ruby

require 'helper'
require 'jobs/hello_job'
require 'jobs/logging_job'
require 'jobs/nested_job'
class QueueNamingTest < ActiveSupport::TestCase
test 'name derived from base' do
assert_equal "default", HelloJob.queue_name
end
test 'uses given queue name job' do
begin
original_queue_name = HelloJob.queue_name
HelloJob.queue_as :greetings
assert_equal "greetings", HelloJob.new.queue_name
ensure
HelloJob.queue_name = original_queue_name
end
end
test 'allows a blank queue name' do
begin
original_queue_name = HelloJob.queue_name
HelloJob.queue_as ""
assert_equal "", HelloJob.new.queue_name
ensure
HelloJob.queue_name = original_queue_name
end
end
test 'does not use a nil queue name' do
begin
original_queue_name = HelloJob.queue_name
HelloJob.queue_as nil
assert_equal "default", HelloJob.new.queue_name
ensure
HelloJob.queue_name = original_queue_name
end
end
test 'evals block given to queue_as to determine queue' do
begin
original_queue_name = HelloJob.queue_name
HelloJob.queue_as { :another }
assert_equal "another", HelloJob.new.queue_name
ensure
HelloJob.queue_name = original_queue_name
end
end
test 'can use arguments to determine queue_name in queue_as block' do
begin
original_queue_name = HelloJob.queue_name
HelloJob.queue_as { self.arguments.first=='1' ? :one : :two }
assert_equal "one", HelloJob.new('1').queue_name
assert_equal "two", HelloJob.new('3').queue_name
ensure
HelloJob.queue_name = original_queue_name
end
end
test 'queu_name_prefix prepended to the queue name' do
begin
original_queue_name_prefix = ActiveJob::Base.queue_name_prefix
original_queue_name = HelloJob.queue_name
ActiveJob::Base.queue_name_prefix = 'aj'
HelloJob.queue_as :low
assert_equal 'aj_low', HelloJob.queue_name
ensure
ActiveJob::Base.queue_name_prefix = original_queue_name_prefix
HelloJob.queue_name = original_queue_name
end
end
test 'uses queue passed to #set' do
job = HelloJob.set(queue: :some_queue).perform_later
assert_equal "some_queue", job.queue_name
end
end