Make sure that mailers will use default job queue

Use "default" as default queue for mailers test helpers
This commit is contained in:
Paul Keen 2020-12-15 12:11:58 +02:00
parent 432698ef2b
commit 7d7bd2bfba
2 changed files with 58 additions and 2 deletions

View File

@ -123,13 +123,13 @@ module ActionMailer
# ContactMailer.with(email: 'user@example.com').welcome.deliver_later
# end
# end
def assert_enqueued_email_with(mailer, method, args: nil, queue: "mailers", &block)
def assert_enqueued_email_with(mailer, method, args: nil, queue: ActionMailer::Base.deliver_later_queue_name || "default", &block)
args = if args.is_a?(Hash)
[mailer.to_s, method.to_s, "deliver_now", params: args, args: []]
else
[mailer.to_s, method.to_s, "deliver_now", args: Array(args)]
end
assert_enqueued_with(job: mailer.delivery_job, args: args, queue: queue, &block)
assert_enqueued_with(job: mailer.delivery_job, args: args, queue: queue.to_s, &block)
end
# Asserts that no emails are enqueued for later delivery.

View File

@ -34,6 +34,14 @@ end
class TestHelperMailerTest < ActionMailer::TestCase
include ActiveSupport::Testing::Stream
setup do
@previous_deliver_later_queue_name = ActionMailer::Base.deliver_later_queue_name
end
teardown do
ActionMailer::Base.deliver_later_queue_name = @previous_delivery_method
end
def test_setup_sets_right_action_mailer_options
assert_equal :test, ActionMailer::Base.delivery_method
assert ActionMailer::Base.perform_deliveries
@ -317,6 +325,54 @@ class TestHelperMailerTest < ActionMailer::TestCase
end
end
def test_assert_enqueued_email_with_when_deliver_later_queue_name_is_nil
ActionMailer::Base.deliver_later_queue_name = nil
assert_nothing_raised do
assert_enqueued_email_with TestHelperMailer, :test do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
end
def test_assert_enqueued_email_with_when_deliver_later_queue_name_with_non_default_name
ActionMailer::Base.deliver_later_queue_name = "sample_mailer_queue_name"
assert_nothing_raised do
assert_enqueued_email_with TestHelperMailer, :test do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
end
def test_assert_enqueued_email_with_when_deliver_later_queue_name_is_symbol
ActionMailer::Base.deliver_later_queue_name = :mailers
assert_nothing_raised do
assert_enqueued_email_with TestHelperMailer, :test do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
end
def test_assert_enqueued_email_with_when_queue_arg_is_symbol
ActionMailer::Base.deliver_later_queue_name = "mailers"
assert_nothing_raised do
assert_enqueued_email_with TestHelperMailer, :test, queue: :mailers do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
end
def test_assert_enqueued_email_with_when_mailer_has_custom_delivery_job
assert_nothing_raised do
assert_enqueued_email_with CustomDeliveryMailer, :test do