##// END OF EJS Templates
Added request and controller objects to the hooks by default....
Added request and controller objects to the hooks by default. The request and controller objects are now added to all hook contexts by default. This will also make url_for work better in hooks by setting up the default_url_options :host, :port, and :protocol. Finally a new helper method @render_or@ has been added to ViewListener. This will let a hook easily render a partial without a full method definition. Thanks to Thomas Löber for the original patch. #2542 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2429 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2315:765f7abc6033
r2368:5b7a5c39a7da
Show More
mailer_test.rb
224 lines | 8.1 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.
require File.dirname(__FILE__) + '/../test_helper'
class MailerTest < Test::Unit::TestCase
Nicolas Chuche
bugfix to two failed tests...
r1929 fixtures :projects, :issues, :users, :members, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
Jean-Philippe Lang
Fixes:...
r1147
def test_generated_links_in_emails
ActionMailer::Base.deliveries.clear
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
# link to the main ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="https://mydomain.foo/issues/1">Bug #1: Can\'t print recipes</a>')
Jean-Philippe Lang
Fixes:...
r1147 # link to a referenced ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="https://mydomain.foo/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
Jean-Philippe Lang
Fixes:...
r1147 # link to a changeset
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="https://mydomain.foo/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
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 ActionMailer::Base.deliveries.clear
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
# link to the main ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/1">Bug #1: Can\'t print recipes</a>')
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990
# link to a referenced ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 # link to a changeset
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
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 ActionMailer::Base.deliveries.clear
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
# link to the main ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/1">Bug #1: Can\'t print recipes</a>')
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990
# link to a referenced ticket
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/issues/2" class="issue" title="Add ingredients categories (Assigned)">#2</a>')
Jean-Philippe Lang
Do not use @:skip_relative_url_root@ to generate urls in Mailer (#2122)....
r1990 # link to a changeset
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert mail.body.include?('<a href="http://mydomain.foo/rdm/projects/ecookbook/repository/revisions/2" class="changeset" title="This commit fixes #1, #2 and references #1 &amp; #3">r2</a>')
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
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
Eric Davis
Converted routing and urls to follow the Rails REST convention....
r2315 assert !mail.body.include?('<a href="https://mydomain.foo/issues/1">Bug #1: Can\'t print recipes</a>')
Nicolas Chuche
add plain text option for mail #2029...
r1930 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 def test_issue_add_message_id
ActionMailer::Base.deliveries.clear
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
ActionMailer::Base.deliveries.clear
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
assert_equal Mailer.message_id_for(journal.issue), mail.references.to_s
end
def test_message_posted_message_id
ActionMailer::Base.deliveries.clear
message = Message.find(1)
Mailer.deliver_message_posted(message, message.author.mail)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
assert_nil mail.references
end
def test_reply_posted_message_id
ActionMailer::Base.deliveries.clear
message = Message.find(3)
Mailer.deliver_message_posted(message, message.author.mail)
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal Mailer.message_id_for(message), mail.message_id
assert_equal Mailer.message_id_for(message.parent), mail.references.to_s
end
Jean-Philippe Lang
added unit tests for mailer...
r212
# test mailer methods for each language
def test_issue_add
issue = Issue.find(1)
GLoc.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)
GLoc.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)
GLoc.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') ]
GLoc.valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert Mailer.deliver_attachments_added(attachements)
end
end
def test_news_added
news = News.find(:first)
GLoc.valid_languages.each do |lang|
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
GLoc.valid_languages.each do |lang|
Setting.default_language = lang.to_s
assert Mailer.deliver_message_posted(message, recipients)
end
end
def test_account_information
user = User.find(:first)
GLoc.valid_languages.each do |lang|
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)
GLoc.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)
GLoc.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_register(token)
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
ActionMailer::Base.deliveries.clear
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')
end
Jean-Philippe Lang
Mailer:...
r864 end