Adds helpers for testing email body.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9086 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2012-03-04 13:28:18 +00:00
parent b1d5f42237
commit 3aaf2b9ed0
7 changed files with 38 additions and 18 deletions

View File

@ -74,7 +74,7 @@ class FilesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal "[eCookbook] New file", mail.subject
assert mail.body.include?('testfile.txt')
assert_mail_body_match 'testfile.txt', mail
end
def test_create_version_file

View File

@ -2164,7 +2164,7 @@ class IssuesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.subject.starts_with?("[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]")
assert mail.body.include?("Subject changed from #{old_subject} to #{new_subject}")
assert_mail_body_match "Subject changed from #{old_subject} to #{new_subject}", mail
end
def test_put_update_with_project_change
@ -2190,7 +2190,7 @@ class IssuesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.subject.starts_with?("[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]")
assert mail.body.include?("Project changed from eCookbook to OnlineStore")
assert_mail_body_match "Project changed from eCookbook to OnlineStore", mail
end
def test_put_update_with_tracker_change
@ -2215,7 +2215,7 @@ class IssuesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.subject.starts_with?("[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]")
assert mail.body.include?("Tracker changed from Bug to Feature request")
assert_mail_body_match "Tracker changed from Bug to Feature request", mail
end
def test_put_update_with_custom_field_change
@ -2238,7 +2238,7 @@ class IssuesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert mail.body.include?("Searchable field changed from 125 to New custom value")
assert_mail_body_match "Searchable field changed from 125 to New custom value", mail
end
def test_put_update_with_multi_custom_field_change
@ -2281,7 +2281,7 @@ class IssuesControllerTest < ActionController::TestCase
assert_equal 2, j.details.size
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?("Status changed from New to Assigned")
assert_mail_body_match "Status changed from New to Assigned", mail
# subject should contain the new status
assert mail.subject.include?("(#{ IssueStatus.find(2).name })")
end
@ -2299,7 +2299,7 @@ class IssuesControllerTest < ActionController::TestCase
assert_equal User.anonymous, j.user
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?(notes)
assert_mail_body_match notes, mail
end
def test_put_update_with_note_and_spent_time
@ -2357,7 +2357,7 @@ class IssuesControllerTest < ActionController::TestCase
assert_equal 59, File.size(attachment.diskfile)
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?('testfile.txt')
assert_mail_body_match 'testfile.txt', mail
end
def test_put_update_with_failure_should_save_attachments

View File

@ -106,7 +106,7 @@ class MessagesControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal "[#{message.board.project.name} - #{message.board.name} - msg#{message.root.id}] Test created message", mail.subject
assert mail.body.include?('Message body')
assert_mail_body_match 'Message body', mail
# author
assert mail.bcc.include?('jsmith@somenet.foo')
# project member

View File

@ -191,7 +191,7 @@ class UsersControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal [user.mail], mail.bcc
assert mail.body.include?('secret')
assert_mail_body_match 'secret', mail
end
def test_create_with_preferences
@ -279,7 +279,7 @@ class UsersControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal ['foo.bar@somenet.foo'], mail.bcc
assert mail.body.include?(ll('fr', :notice_account_activated))
assert_mail_body_match ll('fr', :notice_account_activated), mail
end
def test_update_with_password_change_should_send_a_notification
@ -293,7 +293,7 @@ class UsersControllerTest < ActionController::TestCase
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal [u.mail], mail.bcc
assert mail.body.include?('newpass')
assert_mail_body_match 'newpass', mail
end
test "put :update with a password change to an AuthSource user switching to Internal authentication" do

View File

@ -158,6 +158,26 @@ class ActiveSupport::TestCase
assert s.include?(expected), "\"#{expected}\" not found in \"#{s}\""
end
def assert_not_include(expected, s)
assert !s.include?(expected), "\"#{expected}\" found in \"#{s}\""
end
def assert_mail_body_match(expected, mail)
if expected.is_a?(String)
assert_include expected, mail.body
else
assert_match expected, mail.body
end
end
def assert_mail_body_no_match(expected, mail)
if expected.is_a?(String)
assert_not_include expected, mail.body
else
assert_no_match expected, mail.body
end
end
# Shoulda macros
def self.should_render_404
should_respond_with :not_found

View File

@ -470,7 +470,7 @@ class MailerTest < ActiveSupport::TestCase
assert_equal 1, ActionMailer::Base.deliveries.size
mail = last_email
assert mail.bcc.include?('dlopper@somenet.foo')
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail
assert_equal '1 issue(s) due in the next 42 days', mail.subject
end
@ -486,7 +486,7 @@ class MailerTest < ActiveSupport::TestCase
assert_equal 1, ActionMailer::Base.deliveries.size
mail = last_email
assert mail.bcc.include?('dlopper@somenet.foo')
assert !mail.body.include?('Closed issue')
assert_mail_body_no_match 'Closed issue', mail
end
end
@ -497,7 +497,7 @@ class MailerTest < ActiveSupport::TestCase
assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
mail = last_email
assert mail.bcc.include?('dlopper@somenet.foo')
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
assert_mail_body_match 'Bug #3: Error 281 when updating a recipe', mail
end
def last_email
@ -515,7 +515,7 @@ class MailerTest < ActiveSupport::TestCase
user.language = 'fr'
Mailer.deliver_account_activated(user)
mail = last_email
assert mail.body.include?('Votre compte')
assert_mail_body_match 'Votre compte', mail
assert_equal :it, current_language
end

View File

@ -176,8 +176,8 @@ class RepositoryTest < ActiveSupport::TestCase
assert_not_nil mail
assert mail.subject.starts_with?(
"[#{fixed_issue.project.name} - #{fixed_issue.tracker.name} ##{fixed_issue.id}]")
assert mail.body.include?(
"Status changed from #{old_status} to #{fixed_issue.status}")
assert_mail_body_match(
"Status changed from #{old_status} to #{fixed_issue.status}", mail)
# ignoring commits referencing an issue of another project
assert_equal [], Issue.find(4).changesets