1
0
mirror of https://github.com/meineerde/redmine.git synced 2025-12-19 23:11:12 +00:00

Sort issues by due date in email reminders (#29771).

Patch by Yuichi HARADA.


git-svn-id: http://svn.redmine.org/redmine/trunk@17624 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2018-11-06 03:13:46 +00:00
parent 5dee8589d5
commit 54cfb7b75e
2 changed files with 22 additions and 0 deletions

View File

@ -584,6 +584,7 @@ class Mailer < ActionMailer::Base
issues_by_assignee.each do |assignee, issues| issues_by_assignee.each do |assignee, issues|
if assignee.is_a?(User) && assignee.active? && issues.present? if assignee.is_a?(User) && assignee.active? && issues.present?
visible_issues = issues.select {|i| i.visible?(assignee)} visible_issues = issues.select {|i| i.visible?(assignee)}
visible_issues.sort!{|a, b| (a.due_date <=> b.due_date).nonzero? || (a.id <=> b.id)}
reminder(assignee, visible_issues, days).deliver_later if visible_issues.present? reminder(assignee, visible_issues, days).deliver_later if visible_issues.present?
end end
end end

View File

@ -621,6 +621,27 @@ class MailerTest < ActiveSupport::TestCase
end end
end end
def test_reminders_should_sort_issues_by_due_date
user = User.find(2)
Issue.generate!(:assigned_to => user, :due_date => 2.days.from_now, :subject => 'quux')
Issue.generate!(:assigned_to => user, :due_date => 0.days.from_now, :subject => 'baz')
Issue.generate!(:assigned_to => user, :due_date => 1.days.from_now, :subject => 'qux')
Issue.generate!(:assigned_to => user, :due_date => -1.days.from_now, :subject => 'foo')
Issue.generate!(:assigned_to => user, :due_date => -1.days.from_now, :subject => 'bar')
ActionMailer::Base.deliveries.clear
Mailer.reminders(:days => 7, :users => [user.id])
assert_equal 1, ActionMailer::Base.deliveries.size
assert_select_email do
assert_select 'li', 5
assert_select 'li:nth-child(1)', /foo/
assert_select 'li:nth-child(2)', /bar/
assert_select 'li:nth-child(3)', /baz/
assert_select 'li:nth-child(4)', /qux/
assert_select 'li:nth-child(5)', /quux/
end
end
def test_security_notification def test_security_notification
set_language_if_valid User.find(1).language set_language_if_valid User.find(1).language
with_settings :emails_footer => "footer without link" do with_settings :emails_footer => "footer without link" do