##// END OF EJS Templates
Fixed: subtasks are deleted (not destroyed) when destroying parent issue (#7385)....
Fixed: subtasks are deleted (not destroyed) when destroying parent issue (#7385). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4735 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r4395:17f86d964fe0
r4615:419b195019a2
Show More
mailer_test.rb
433 lines | 14.2 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
added unit tests for mailer...
r212 # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
added unit tests for mailer...
r212
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 class MailerTest < ActiveSupport::TestCase
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 include Redmine::I18n
Eric Davis
Fixed some tests that where looking for specific issue urls but weren't matching...
r2935 include ActionController::Assertions::SelectorAssertions
Jean-Philippe Lang
Fixed: email notifications may affect language of notices on the UI (#4086)....
r3193 fixtures :projects, :enabled_modules, :issues, :users, :members, :member_roles, :roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
Jean-Philippe Lang
Fixes:...
r1147
Jean-Philippe Lang
Fixed: Links in Forum mails should redirect to message, not topic (#4884)....
r3344 def setup
ActionMailer::Base.deliveries.clear
Setting.host_name = 'mydomain.foo'
Setting.protocol = 'http'
end
Jean-Philippe Lang
Fixes:...
r1147 def test_generated_links_in_emails
Setting.host_name = 'mydomain.foo'
Setting.protocol = 'https'
journal = Journal.find(2)
assert Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315
Eric Davis
Fixed some tests that where looking for specific issue urls but weren't matching...
r2935 assert_select_email do
# link to the main ticket
assert_select "a[href=?]", "https://mydomain.foo/issues/1", :text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]", "https://mydomain.foo/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
# link to a changeset
assert_select "a[href=?][title=?]", "https://mydomain.foo/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
end
Jean-Philippe Lang
Fixes:...
r1147 end
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990
def test_generated_links_with_prefix
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 relative_url_root = Redmine::Utils.relative_url_root
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 Setting.host_name = 'mydomain.foo/rdm'
Setting.protocol = 'http'
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 Redmine::Utils.relative_url_root = '/rdm'
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990
journal = Journal.find(2)
assert Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
Eric Davis
Fixed some tests that where looking for specific issue urls but weren't matching...
r2935
assert_select_email do
# link to the main ticket
assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
# link to a changeset
assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
end
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 ensure
# restore it
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 Redmine::Utils.relative_url_root = relative_url_root
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 end
def test_generated_links_with_prefix_and_no_relative_url_root
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 relative_url_root = Redmine::Utils.relative_url_root
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 Setting.host_name = 'mydomain.foo/rdm'
Setting.protocol = 'http'
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 Redmine::Utils.relative_url_root = nil
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990
journal = Journal.find(2)
assert Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
assert_kind_of TMail::Mail, mail
Eric Davis
Fixed some tests that where looking for specific issue urls but weren't matching...
r2935
assert_select_email do
# link to the main ticket
assert_select "a[href=?]", "http://mydomain.foo/rdm/issues/1", :text => "Bug #1: Can't print recipes"
# link to a referenced ticket
assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/issues/2", "Add ingredients categories (Assigned)", :text => "#2"
# link to a changeset
assert_select "a[href=?][title=?]", "http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2", "This commit fixes #1, #2 and references #1 &amp; #3", :text => "r2"
end
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 ensure
# restore it
Jean-Philippe Lang
Slight changes to ease Rails 2.2 support....
r2232 Redmine::Utils.relative_url_root = relative_url_root
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 end
Jean-Philippe Lang
Replaces List-Id header with Precedence and Auto-Submitted headers (#2984, #2879)....
r2566
def test_email_headers
issue = Issue.find(1)
Mailer.deliver_issue_add(issue)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal 'bulk', mail.header_string('Precedence')
assert_equal 'auto-generated', mail.header_string('Auto-Submitted')
end
Nicolas Chuche
add plain text option for mail #2029...
r1930
def test_plain_text_mail
Setting.plain_text_mail = 1
journal = Journal.find(2)
Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
Jean-Philippe Lang
Sets proper content type for plain text mails (#3970)....
r2847 assert_equal "text/plain", mail.content_type
assert_equal 0, mail.parts.size
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773 assert !mail.encoded.include?('href')
Nicolas Chuche
add plain text option for mail #2029...
r1930 end
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773
def test_html_mail
Setting.plain_text_mail = 0
journal = Journal.find(2)
Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
assert_equal 2, mail.parts.size
assert mail.encoded.include?('href')
end
Jean-Philippe Lang
Adds a test for emission address with phrase (#4855)....
r3329
def test_mail_from_with_phrase
with_settings :mail_from => 'Redmine app <redmine@example.net>' do
Mailer.deliver_test(User.find(1))
end
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal 'Redmine app', mail.from_addrs.first.name
end
Jean-Philippe Lang
Adds a test for not sending email without recipient (#4920)....
r3404
def test_should_not_send_email_without_recipient
news = News.find(:first)
user = news.author
# Remove members except news author
news.project.memberships.each {|m| m.destroy unless m.user == user}
user.pref[:no_self_notified] = false
user.pref.save
User.current = user
Mailer.deliver_news_added(news.reload)
assert_equal 1, last_email.bcc.size
# nobody to notify
user.pref[:no_self_notified] = true
user.pref.save
User.current = user
ActionMailer::Base.deliveries.clear
Mailer.deliver_news_added(news.reload)
assert ActionMailer::Base.deliveries.empty?
end
Eric Davis
Upgraded to Rails 2.3.4 (#3597)...
r2773
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 def test_issue_add_message_id
issue = Issue.find(1)
Mailer.deliver_issue_add(issue)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(issue), mail.message_id
assert_nil mail.references
end
def test_issue_edit_message_id
journal = Journal.find(1)
Mailer.deliver_issue_edit(journal)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(journal), mail.message_id
Jean-Philippe Lang
Fixes some test failures due to Array#to_s behaviour in ruby1.9....
r2799 assert_equal Mailer.message_id_for(journal.issue), mail.references.first.to_s
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 end
def test_message_posted_message_id
message = Message.find(1)
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 Mailer.deliver_message_posted(message)
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
assert_nil mail.references
Jean-Philippe Lang
Fixed: Links in Forum mails should redirect to message, not topic (#4884)....
r3344 assert_select_email do
# link to the message
assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject
end
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 end
def test_reply_posted_message_id
message = Message.find(3)
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 Mailer.deliver_message_posted(message)
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
Jean-Philippe Lang
Fixes some test failures due to Array#to_s behaviour in ruby1.9....
r2799 assert_equal Mailer.message_id_for(message.parent), mail.references.first.to_s
Jean-Philippe Lang
Fixed: Links in Forum mails should redirect to message, not topic (#4884)....
r3344 assert_select_email do
# link to the reply
assert_select "a[href=?]", "http://mydomain.foo/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject
end
Jean-Philippe Lang
Adds Message-Id and References headers to email notifications so that issues and messages threads can be displayed by email clients (#1401)....
r2279 end
Jean-Philippe Lang
added unit tests for mailer...
r212
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 context("#issue_add") do
setup do
ActionMailer::Base.deliveries.clear
Setting.bcc_recipients = '1'
@issue = Issue.find(1)
end
should "notify project members" do
assert Mailer.deliver_issue_add(@issue)
assert last_email.bcc.include?('dlopper@somenet.foo')
end
should "not notify project members that are not allow to view the issue" do
Role.find(2).remove_permission!(:view_issues)
assert Mailer.deliver_issue_add(@issue)
assert !last_email.bcc.include?('dlopper@somenet.foo')
end
should "notify issue watchers" do
user = User.find(9)
Jean-Philippe Lang
Adds unit test for #3645....
r3213 # minimal email notification options
user.pref[:no_self_notified] = '1'
user.pref.save
user.mail_notification = false
user.save
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 Watcher.create!(:watchable => @issue, :user => user)
assert Mailer.deliver_issue_add(@issue)
assert last_email.bcc.include?(user.mail)
end
should "not notify watchers not allowed to view the issue" do
user = User.find(9)
Watcher.create!(:watchable => @issue, :user => user)
Role.non_member.remove_permission!(:view_issues)
assert Mailer.deliver_issue_add(@issue)
assert !last_email.bcc.include?(user.mail)
end
end
Jean-Philippe Lang
added unit tests for mailer...
r212 # test mailer methods for each language
def test_issue_add
issue = Issue.find(1)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
wiki branch merged into trunk...
r320 Setting.default_language = lang.to_s
Jean-Philippe Lang
added unit tests for mailer...
r212 assert Mailer.deliver_issue_add(issue)
end
end
def test_issue_edit
journal = Journal.find(1)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
wiki branch merged into trunk...
r320 Setting.default_language = lang.to_s
Jean-Philippe Lang
added unit tests for mailer...
r212 assert Mailer.deliver_issue_edit(journal)
end
end
Jean-Philippe Lang
Mailer:...
r864 def test_document_added
Jean-Philippe Lang
added unit tests for mailer...
r212 document = Document.find(1)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
wiki branch merged into trunk...
r320 Setting.default_language = lang.to_s
Jean-Philippe Lang
Removed translated email templates attachments_added and document_added (no longer usefull)....
r823 assert Mailer.deliver_document_added(document)
Jean-Philippe Lang
added unit tests for mailer...
r212 end
end
Jean-Philippe Lang
Mailer:...
r864
def test_attachments_added
attachements = [ Attachment.find_by_container_type('Document') ]
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
Mailer:...
r864 Setting.default_language = lang.to_s
assert Mailer.deliver_attachments_added(attachements)
end
end
Jean-Philippe Lang
Fixed: no email notification on new project/version file added (#4966)....
r3418 def test_version_file_added
attachements = [ Attachment.find_by_container_type('Version') ]
assert Mailer.deliver_attachments_added(attachements)
assert_not_nil last_email.bcc
assert last_email.bcc.any?
end
def test_project_file_added
attachements = [ Attachment.find_by_container_type('Project') ]
assert Mailer.deliver_attachments_added(attachements)
assert_not_nil last_email.bcc
assert last_email.bcc.any?
end
Jean-Philippe Lang
Mailer:...
r864 def test_news_added
news = News.find(:first)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
Mailer:...
r864 Setting.default_language = lang.to_s
assert Mailer.deliver_news_added(news)
end
end
def test_message_posted
message = Message.find(:first)
recipients = ([message.root] + message.root.children).collect {|m| m.author.mail if m.author}
recipients = recipients.compact.uniq
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
Mailer:...
r864 Setting.default_language = lang.to_s
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 assert Mailer.deliver_message_posted(message)
Jean-Philippe Lang
Mailer:...
r864 end
end
Jean-Philippe Lang
Add tests for wiki edit notifications (#7024)....
r4365 def test_wiki_content_added
content = WikiContent.find(:first)
valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert_difference 'ActionMailer::Base.deliveries.size' do
assert Mailer.deliver_wiki_content_added(content)
end
end
end
def test_wiki_content_updated
content = WikiContent.find(:first)
valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert_difference 'ActionMailer::Base.deliveries.size' do
assert Mailer.deliver_wiki_content_updated(content)
end
end
end
Jean-Philippe Lang
Mailer:...
r864 def test_account_information
Jean-Philippe Lang
Fixes random test failure....
r3593 user = User.find(2)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
Mailer:...
r864 user.update_attribute :language, lang.to_s
user.reload
assert Mailer.deliver_account_information(user, 'pAsswORd')
end
end
Jean-Philippe Lang
added unit tests for mailer...
r212
def test_lost_password
token = Token.find(2)
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
wiki branch merged into trunk...
r320 token.user.update_attribute :language, lang.to_s
Jean-Philippe Lang
Mailer:...
r864 token.reload
Jean-Philippe Lang
added unit tests for mailer...
r212 assert Mailer.deliver_lost_password(token)
end
end
def test_register
token = Token.find(1)
Jean-Philippe Lang
Test that account activation email contains the appropriate link (#2825)....
r2493 Setting.host_name = 'redmine.foo'
Setting.protocol = 'https'
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 valid_languages.each do |lang|
Jean-Philippe Lang
wiki branch merged into trunk...
r320 token.user.update_attribute :language, lang.to_s
Jean-Philippe Lang
Mailer:...
r864 token.reload
Jean-Philippe Lang
Test that account activation email contains the appropriate link (#2825)....
r2493 ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
added unit tests for mailer...
r212 assert Mailer.deliver_register(token)
Jean-Philippe Lang
Test that account activation email contains the appropriate link (#2825)....
r2493 mail = ActionMailer::Base.deliveries.last
assert mail.body.include?("https://redmine.foo/account/activate?token=#{token.value}")
Jean-Philippe Lang
added unit tests for mailer...
r212 end
end
Jean-Philippe Lang
Adds a rake task to send reminders. An email is sent to each user with a list of the issues due in the next days, if any....
r1445
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494 def test_test
user = User.find(1)
valid_languages.each do |lang|
user.update_attribute :language, lang.to_s
assert Mailer.deliver_test(user)
end
end
Jean-Philippe Lang
Adds a rake task to send reminders. An email is sent to each user with a list of the issues due in the next days, if any....
r1445 def test_reminders
Mailer.reminders(:days => 42)
assert_equal 1, ActionMailer::Base.deliveries.size
mail = ActionMailer::Base.deliveries.last
assert mail.bcc.include?('dlopper@somenet.foo')
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
Eric Davis
Show the number of days in the subject line of Reminder emails....
r3793 assert_equal '1 issue(s) due in the next 42 days', mail.subject
Jean-Philippe Lang
Adds a rake task to send reminders. An email is sent to each user with a list of the issues due in the next days, if any....
r1445 end
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055
Eric Davis
Added a users options to the reminders email...
r4053 def test_reminders_for_users
Mailer.reminders(:days => 42, :users => ['5'])
assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper
Mailer.reminders(:days => 42, :users => ['3'])
assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper
mail = ActionMailer::Base.deliveries.last
assert mail.bcc.include?('dlopper@somenet.foo')
assert mail.body.include?('Bug #3: Error 281 when updating a recipe')
end
Jean-Philippe Lang
Make sure users don't get notified for thing they can not view (#3589)....
r3055 def last_email
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
mail
end
Jean-Philippe Lang
Fixed: email notifications may affect language of notices on the UI (#4086)....
r3193
def test_mailer_should_not_change_locale
Setting.default_language = 'en'
# Set current language to italian
set_language_if_valid 'it'
# Send an email to a french user
user = User.find(1)
user.language = 'fr'
Mailer.deliver_account_activated(user)
mail = ActionMailer::Base.deliveries.last
assert mail.body.include?('Votre compte')
assert_equal :it, current_language
end
Jean-Philippe Lang
Adds an option to enable/disable email notifications during a project copy (#4672)....
r3494
def test_with_deliveries_off
Mailer.with_deliveries false do
Mailer.deliver_test(User.find(1))
end
assert ActionMailer::Base.deliveries.empty?
# should restore perform_deliveries
assert ActionMailer::Base.perform_deliveries
end
Eric Davis
Add a Email Header setting. Useful for adding delimiters to every email....
r4248
context "layout" do
should "include the emails_header" do
with_settings(:emails_header => "*Header content*") do
assert Mailer.deliver_test(User.find(1))
assert_select_email do
assert_select ".header" do
assert_select "strong", :text => "Header content"
end
end
end
end
end
Jean-Philippe Lang
Mailer:...
r864 end