diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2006-11-05 21:56:18 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2006-11-05 21:56:18 +0000 |
commit | ba553f94248340b54b32cee1fcbd41295713d180 (patch) | |
tree | 232174d19991632ef0583cb685d5f3c520a510cd /actionmailer/lib | |
parent | 2fbe0ae7a2d945dbd9d0e0abad23afde75db67fb (diff) | |
download | rails-ba553f94248340b54b32cee1fcbd41295713d180.tar.gz rails-ba553f94248340b54b32cee1fcbd41295713d180.tar.bz2 rails-ba553f94248340b54b32cee1fcbd41295713d180.zip |
Add assert_emails and assert_no_emails to test the number of emails delivered. Closes #6479.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5436 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionmailer/lib')
-rwxr-xr-x | actionmailer/lib/action_mailer.rb | 1 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/test_helper.rb | 67 |
2 files changed, 68 insertions, 0 deletions
diff --git a/actionmailer/lib/action_mailer.rb b/actionmailer/lib/action_mailer.rb index d17772209b..5cf9f4d9a3 100755 --- a/actionmailer/lib/action_mailer.rb +++ b/actionmailer/lib/action_mailer.rb @@ -37,6 +37,7 @@ require 'action_mailer/base' require 'action_mailer/helpers' require 'action_mailer/mail_helper' require 'action_mailer/quoting' +require 'action_mailer/test_helper' require 'tmail' require 'net/smtp' diff --git a/actionmailer/lib/action_mailer/test_helper.rb b/actionmailer/lib/action_mailer/test_helper.rb new file mode 100644 index 0000000000..3a1612442f --- /dev/null +++ b/actionmailer/lib/action_mailer/test_helper.rb @@ -0,0 +1,67 @@ +module ActionMailer + module TestHelper + # Asserts that the number of emails sent matches the given number. + # + # def test_emails + # assert_emails 0 + # ContactMailer.deliver_contact + # assert_emails 1 + # ContactMailer.deliver_contact + # assert_emails 2 + # end + # + # If a block is passed, that block should cause the specified number of emails to be sent. + # + # def test_emails_again + # assert_emails 1 do + # ContactMailer.deliver_contact + # end + # + # assert_emails 2 do + # ContactMailer.deliver_contact + # ContactMailer.deliver_contact + # end + # end + def assert_emails(number) + if block_given? + original_count = ActionMailer::Base.deliveries.size + yield + new_count = ActionMailer::Base.deliveries.size + assert_equal original_count + number, new_count, "#{number} emails expected, but #{new_count - original_count} were sent" + else + assert_equal number, ActionMailer::Base.deliveries.size + end + end + + # Assert that no emails have been sent. + # + # def test_emails + # assert_no_emails + # ContactMailer.deliver_contact + # assert_emails 1 + # end + # + # If a block is passed, that block should not cause any emails to be sent. + # + # def test_emails_again + # assert_no_emails do + # # No emails should be sent from this block + # end + # end + # + # Note: This assertion is simply a shortcut for: + # + # assert_emails 0 + def assert_no_emails(&block) + assert_emails 0, &block + end + end +end + +module Test + module Unit + class TestCase + include ActionMailer::TestHelper + end + end +end |