Make sure that mailers will use default job queue
Use "default" as default queue for mailers test helpers
This commit is contained in:
parent
432698ef2b
commit
7d7bd2bfba
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue