From 7601b18a6952f51df8d3ea3771b7c32843d025d0 Mon Sep 17 00:00:00 2001 From: Kasper Timm Hansen Date: Wed, 30 Oct 2019 19:54:04 -0500 Subject: [PATCH] Merge pull request #37608 from bogdanvlviv/fix-assertions-for-mail-with-legacy-parameterized-delivery-job Fix ActionMailer assertions don't work for parameterized mail with legacy delivery job --- actionmailer/CHANGELOG.md | 5 ++++ actionmailer/lib/action_mailer/test_helper.rb | 3 +- actionmailer/test/test_helper_test.rb | 28 +++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index 5060fd088b..3240a857c4 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,8 @@ +* Fix ActionMailer assertions don't work for parameterized mail with legacy delivery job. + + *bogdanvlviv* + + ## Rails 6.0.0 (August 16, 2019) ## * No changes. diff --git a/actionmailer/lib/action_mailer/test_helper.rb b/actionmailer/lib/action_mailer/test_helper.rb index e222301dff..cb23490a12 100644 --- a/actionmailer/lib/action_mailer/test_helper.rb +++ b/actionmailer/lib/action_mailer/test_helper.rb @@ -156,7 +156,8 @@ def assert_no_enqueued_emails(&block) 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 @@ def test_assert_enqueued_emails 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 @@ def test_assert_enqueued_parameterized_emails 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 -- GitLab