diff --git a/actionmailer/lib/action_mailer/test_helper.rb b/actionmailer/lib/action_mailer/test_helper.rb index 24e6650ff6..ee1bce1897 100644 --- a/actionmailer/lib/action_mailer/test_helper.rb +++ b/actionmailer/lib/action_mailer/test_helper.rb @@ -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. diff --git a/actionmailer/test/test_helper_test.rb b/actionmailer/test/test_helper_test.rb index f1e55c89a5..7e5f1e3c40 100644 --- a/actionmailer/test/test_helper_test.rb +++ b/actionmailer/test/test_helper_test.rb @@ -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