Fixed: email notifications may affect language of notices on the UI (#4086).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3307 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2010-01-10 14:54:02 +00:00
parent fe7d65922b
commit ff77fb6aa9
2 changed files with 17 additions and 1 deletions

View File

@ -272,6 +272,7 @@ class Mailer < ActionMailer::Base
# Overrides default deliver! method to prevent from sending an email
# with no recipient, cc or bcc
def deliver!(mail = @mail)
set_language_if_valid @initial_language
return false if (recipients.nil? || recipients.empty?) &&
(cc.nil? || cc.empty?) &&
(bcc.nil? || bcc.empty?)
@ -313,6 +314,7 @@ class Mailer < ActionMailer::Base
private
def initialize_defaults(method_name)
super
@initial_language = current_language
set_language_if_valid Setting.default_language
from Setting.mail_from

View File

@ -20,7 +20,7 @@ require File.dirname(__FILE__) + '/../test_helper'
class MailerTest < ActiveSupport::TestCase
include Redmine::I18n
include ActionController::Assertions::SelectorAssertions
fixtures :projects, :issues, :users, :members, :member_roles, :documents, :attachments, :news, :tokens, :journals, :journal_details, :changesets, :trackers, :issue_statuses, :enumerations, :messages, :boards, :repositories
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
def test_generated_links_in_emails
ActionMailer::Base.deliveries.clear
@ -296,4 +296,18 @@ class MailerTest < ActiveSupport::TestCase
assert_not_nil mail
mail
end
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
end