From 37b72ff5dee6d41dc30ca2a9eeceb51f6623bd43 Mon Sep 17 00:00:00 2001 From: bogdanvlviv Date: Wed, 30 Oct 2019 21:55:12 +0000 Subject: [PATCH] Fix ActionMailer assertions don't work for parameterized mail with legacy delivery job We should backport this to `6-0-stable`. Fixes https://github.com/rails/rails/issues/37605 --- actionmailer/CHANGELOG.md | 4 +++ actionmailer/lib/action_mailer/test_helper.rb | 3 +- actionmailer/test/test_helper_test.rb | 28 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index ff39776825..c40ce37f28 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,7 @@ +* Fix ActionMailer assertions don't work for parameterized mail with legacy delivery job. + + *bogdanvlviv* + * Added `email_address_with_name` to properly escape addresses with names. *Sunny Ripert* diff --git a/actionmailer/lib/action_mailer/test_helper.rb b/actionmailer/lib/action_mailer/test_helper.rb index 988db2491c..24e6650ff6 100644 --- a/actionmailer/lib/action_mailer/test_helper.rb +++ b/actionmailer/lib/action_mailer/test_helper.rb @@ -155,7 +155,8 @@ module ActionMailer def delivery_job_filter(job) job_class = job.is_a?(Hash) ? job.fetch(:job) : job.class - Base.descendants.map(&:delivery_job).include?(job_class) + Base.descendants.map(&:delivery_job).include?(job_class) || + ActionMailer::Parameterized::DeliveryJob == job_class end end end diff --git a/actionmailer/test/test_helper_test.rb b/actionmailer/test/test_helper_test.rb index 60e2389aa8..f1e55c89a5 100644 --- a/actionmailer/test/test_helper_test.rb +++ b/actionmailer/test/test_helper_test.rb @@ -206,6 +206,20 @@ class TestHelperMailerTest < ActionMailer::TestCase end end + def test_assert_enqueued_emails_with_legacy_delivery_job + previous_delivery_job = TestHelperMailer.delivery_job + TestHelperMailer.delivery_job = ActionMailer::DeliveryJob + assert_nothing_raised do + assert_enqueued_emails 1 do + silence_stream($stdout) do + TestHelperMailer.test.deliver_later + end + end + end + ensure + TestHelperMailer.delivery_job = previous_delivery_job + end + def test_assert_enqueued_parameterized_emails assert_nothing_raised do assert_enqueued_emails 1 do @@ -216,6 +230,20 @@ class TestHelperMailerTest < ActionMailer::TestCase end end + def test_assert_enqueued_parameterized_emails_with_legacy_delivery_job + previous_delivery_job = TestHelperMailer.delivery_job + TestHelperMailer.delivery_job = ActionMailer::DeliveryJob + assert_nothing_raised do + assert_enqueued_emails 1 do + silence_stream($stdout) do + TestHelperMailer.with(a: 1).test.deliver_later + end + end + end + ensure + TestHelperMailer.delivery_job = previous_delivery_job + end + def test_assert_enqueued_emails_too_few_sent error = assert_raise ActiveSupport::TestCase::Assertion do assert_enqueued_emails 2 do