Feature #29771 » 29771-reminders-order-due-date.patch
| app/models/mailer.rb | ||
|---|---|---|
| 27 | 27 |
include Roadie::Rails::Automatic |
| 28 | 28 | |
| 29 | 29 |
# Overrides ActionMailer::Base#process in order to set the recipient as the current user |
| 30 |
# and his language as the default locale.
|
|
| 30 |
# and his language as the default locale. |
|
| 31 | 31 |
# The first argument of all actions of this Mailer must be a User (the recipient), |
| 32 | 32 |
# otherwise an ArgumentError is raised. |
| 33 | 33 |
def process(action, *args) |
| ... | ... | |
| 584 | 584 |
issues_by_assignee.each do |assignee, issues| |
| 585 | 585 |
if assignee.is_a?(User) && assignee.active? && issues.present? |
| 586 | 586 |
visible_issues = issues.select {|i| i.visible?(assignee)}
|
| 587 |
visible_issues.sort!{|a, b| (b.due_date <=> a.due_date).nonzero? || (a.id <=> b.id)}
|
|
| 587 | 588 |
reminder(assignee, visible_issues, days).deliver_later if visible_issues.present? |
| 588 | 589 |
end |
| 589 | 590 |
end |
| test/unit/mailer_test.rb | ||
|---|---|---|
| 621 | 621 |
end |
| 622 | 622 |
end |
| 623 | 623 | |
| 624 |
def test_reminders_order_descending_on_due_date |
|
| 625 |
with_settings :default_language => 'en' do |
|
| 626 |
user = User.find(2) |
|
| 627 |
issues = [] |
|
| 628 |
issues << Issue.generate!(:assigned_to => user, :due_date => 5.days.from_now) |
|
| 629 |
issues << Issue.generate!(:assigned_to => user, :due_date => 5.days.from_now) |
|
| 630 |
issues << Issue.generate!(:assigned_to => user, :due_date => 6.days.from_now) |
|
| 631 |
issues << Issue.generate!(:assigned_to => user, :due_date => 6.days.from_now) |
|
| 632 |
issues.sort!{|a, b| (b.due_date <=> a.due_date).nonzero? || (a.id <=> b.id)}
|
|
| 633 |
ActionMailer::Base.deliveries.clear |
|
| 634 | ||
| 635 |
Mailer.reminders(:days => 7, :users => [user.id]) |
|
| 636 |
assert_equal 1, ActionMailer::Base.deliveries.size |
|
| 637 |
mail = last_email |
|
| 638 | ||
| 639 |
mailbody_issues = mail_body(mail).split(/\r\n/).select{|row| /^\*/ =~ row}
|
|
| 640 |
mailbody_issues.collect!{|row| /^\*.+#(\d+):/ =~ row; $1.to_i rescue nil}
|
|
| 641 | ||
| 642 |
assert_equal issues.collect(&:id), mailbody_issues |
|
| 643 |
end |
|
| 644 |
end |
|
| 645 | ||
| 624 | 646 |
def test_security_notification |
| 625 | 647 |
set_language_if_valid User.find(1).language |
| 626 | 648 |
with_settings :emails_footer => "footer without link" do |
| ... | ... | |
| 684 | 706 |
# Send an email to a french user |
| 685 | 707 |
user = User.find(1) |
| 686 | 708 |
user.update_attribute :language, 'fr' |
| 687 |
|
|
| 709 | ||
| 688 | 710 |
Mailer.deliver_account_activated(user) |
| 689 | 711 |
mail = last_email |
| 690 | 712 |
assert_mail_body_match 'Votre compte', mail |