OSDN Git Service

Fixed: email notifications may affect language of notices on the UI (#4086).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jan 2010 14:54:02 +0000 (14:54 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 10 Jan 2010 14:54:02 +0000 (14:54 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3307 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mailer.rb
test/unit/mailer_test.rb

index dfd2737..9c409af 100644 (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
     
index dfc6caf..fbbff1a 100644 (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