summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/mailer.rb19
-rw-r--r--test/unit/mailer_test.rb27
2 files changed, 41 insertions, 5 deletions
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index f58a1c88d..c095b796c 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -74,8 +74,8 @@ class Mailer < ActionMailer::Base
redmine_headers 'Project' => issue.project.identifier,
'Issue-Tracker' => issue.tracker.name,
'Issue-Id' => issue.id,
- 'Issue-Author' => issue.author.login
- redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
+ 'Issue-Author' => issue.author.login,
+ 'Issue-Assignee' => assignee_for_header(issue)
message_id issue
references issue
@author = issue.author
@@ -106,8 +106,8 @@ class Mailer < ActionMailer::Base
redmine_headers 'Project' => issue.project.identifier,
'Issue-Tracker' => issue.tracker.name,
'Issue-Id' => issue.id,
- 'Issue-Author' => issue.author.login
- redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
+ 'Issue-Author' => issue.author.login,
+ 'Issue-Assignee' => assignee_for_header(issue)
message_id journal
references issue
@author = journal.user
@@ -760,7 +760,16 @@ class Mailer < ActionMailer::Base
# Appends a Redmine header field (name is prepended with 'X-Redmine-')
def redmine_headers(h)
- h.each {|k, v| headers["X-Redmine-#{k}"] = v.to_s}
+ h.compact.each {|k, v| headers["X-Redmine-#{k}"] = v.to_s}
+ end
+
+ def assignee_for_header(issue)
+ case issue.assigned_to
+ when User
+ issue.assigned_to.login
+ when Group
+ "Group (#{issue.assigned_to.name})"
+ end
end
# Singleton class method is public
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index b25e17427..da12788f8 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -219,6 +219,33 @@ class MailerTest < ActiveSupport::TestCase
assert_equal issue.author.login, mail.header['X-Redmine-Sender'].to_s
end
+ def test_email_headers_should_not_include_assignee_when_not_assigned
+ issue = Issue.find(6)
+ issue.init_journal(User.current)
+ issue.update(:status_id => 4)
+ issue.update(:assigned_to_id => nil)
+ mail = last_email
+ assert_not mail.header['X-Redmine-Issue-Assignee']
+ end
+
+ def test_email_headers_should_include_assignee_when_assigned
+ issue = Issue.find(6)
+ issue.init_journal(User.current)
+ issue.update(:assigned_to_id => 2)
+ mail = last_email
+ assert_equal 'jsmith', mail.header['X-Redmine-Issue-Assignee'].to_s
+ end
+
+ def test_email_headers_should_include_assignee_if_assigned_to_group
+ issue = Issue.find(6)
+ with_settings :issue_group_assignment => 1 do
+ issue.init_journal(User.current)
+ issue.update(:assigned_to_id => 10)
+ end
+ mail = last_email
+ assert_equal 'Group (A Team)', mail.header['X-Redmine-Issue-Assignee'].to_s
+ end
+
def test_plain_text_mail
Setting.plain_text_mail = 1
journal = Journal.find(2)