diff options
author | Yves Senn <yves.senn@gmail.com> | 2016-02-08 11:47:25 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2016-02-16 11:20:59 +0100 |
commit | 9d378747326d26cf1afdac4433ead22967af0984 (patch) | |
tree | bd377111a1ce085f8e31198fa636f6f9b8235254 /actionmailer | |
parent | 3dd9fe5db44777eaf3765875fe259d53e72a0448 (diff) | |
download | rails-9d378747326d26cf1afdac4433ead22967af0984.tar.gz rails-9d378747326d26cf1afdac4433ead22967af0984.tar.bz2 rails-9d378747326d26cf1afdac4433ead22967af0984.zip |
reset `ActionMailer::Base.deliveries` in `ActionDispatch::IntegrationTest`.
Whenever you are sending emails in integration tests using the `:test`
delivery method you need to make sure that
`ActionMailer::Base.deliveries` is reset after every test. This piece of
boilerplate code is present in all my applications that send
emails. Let's have `ActionDispatch::IntegrationTest` reset the
deliveries automatically.
Diffstat (limited to 'actionmailer')
-rw-r--r-- | actionmailer/CHANGELOG.md | 6 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/railtie.rb | 2 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/test_case.rb | 17 |
3 files changed, 24 insertions, 1 deletions
diff --git a/actionmailer/CHANGELOG.md b/actionmailer/CHANGELOG.md index 22e9bd12a1..1531f2b471 100644 --- a/actionmailer/CHANGELOG.md +++ b/actionmailer/CHANGELOG.md @@ -1,3 +1,9 @@ +* Reset `ActionMailer::Base.deliveries` after every test in + `ActionDispatch::IntegrationTest`. + + *Yves Senn* + + ## Rails 5.0.0.beta2 (February 01, 2016) ## * No changes. diff --git a/actionmailer/lib/action_mailer/railtie.rb b/actionmailer/lib/action_mailer/railtie.rb index fa707021c7..00e3972196 100644 --- a/actionmailer/lib/action_mailer/railtie.rb +++ b/actionmailer/lib/action_mailer/railtie.rb @@ -51,6 +51,8 @@ module ActionMailer get '/rails/mailers/*path' => "rails/mailers#preview" end end + + ActionDispatch::IntegrationTest.send :include, ActionMailer::TestCase::ClearTestDeliviers end end diff --git a/actionmailer/lib/action_mailer/test_case.rb b/actionmailer/lib/action_mailer/test_case.rb index 0aa15e31ba..063d2180f8 100644 --- a/actionmailer/lib/action_mailer/test_case.rb +++ b/actionmailer/lib/action_mailer/test_case.rb @@ -11,6 +11,21 @@ module ActionMailer end class TestCase < ActiveSupport::TestCase + module ClearTestDeliviers + extend ActiveSupport::Concern + + included do + teardown :clear_test_deliviers + end + + private + def clear_test_deliviers + if ActionMailer::Base.delivery_method == :test + ActionMailer::Base.deliveries.clear + end + end + end + module Behavior extend ActiveSupport::Concern @@ -66,7 +81,6 @@ module ActionMailer def restore_test_deliveries # :nodoc: restore_delivery_method ActionMailer::Base.perform_deliveries = @old_perform_deliveries - ActionMailer::Base.deliveries.clear end def set_delivery_method(method) # :nodoc: @@ -100,5 +114,6 @@ module ActionMailer end include Behavior + include ClearTestDeliviers end end |