diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index fa3b5516c..582e1bc6a 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -620,31 +620,35 @@ class MailerTest < ActiveSupport::TestCase end def test_reminders - Mailer.reminders(:days => 42) - assert_equal 1, ActionMailer::Base.deliveries.size - mail = last_email - assert mail.bcc.include?('dlopper@somenet.foo') - assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail - assert_mail_body_match 'View all issues (2 open)', mail - assert_select_email do - assert_select 'a[href=?]', - 'http://localhost:3000/issues?assigned_to_id=me&set_filter=1&sort=due_date%3Aasc', - :text => 'View all issues' - assert_select '/p:nth-last-of-type(1)', :text => 'View all issues (2 open)' + travel_to Date.today.to_time(:utc) do + Mailer.reminders(:days => 42) + assert_equal 1, ActionMailer::Base.deliveries.size + mail = last_email + assert mail.bcc.include?('dlopper@somenet.foo') + assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail + assert_mail_body_match 'View all issues (2 open)', mail + assert_select_email do + assert_select 'a[href=?]', + 'http://localhost:3000/issues?assigned_to_id=me&set_filter=1&sort=due_date%3Aasc', + :text => 'View all issues' + assert_select '/p:nth-last-of-type(1)', :text => 'View all issues (2 open)' + end + assert_equal '1 issue(s) due in the next 42 days', mail.subject end - assert_equal '1 issue(s) due in the next 42 days', mail.subject end def test_reminders_language_auto with_settings :default_language => 'fr' do user = User.find(3) user.update_attribute :language, '' - Mailer.reminders(:days => 42) - assert_equal 1, ActionMailer::Base.deliveries.size - mail = last_email - assert mail.bcc.include?('dlopper@somenet.foo') - assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (En retard de 5 jours)', mail - assert_equal "1 demande(s) arrivent à échéance (42)", mail.subject + travel_to Date.today.to_time(:utc) do + Mailer.reminders(:days => 42) + assert_equal 1, ActionMailer::Base.deliveries.size + mail = last_email + assert mail.bcc.include?('dlopper@somenet.foo') + assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (En retard de 5 jours)', mail + assert_equal "1 demande(s) arrivent à échéance (42)", mail.subject + end end end @@ -665,13 +669,15 @@ class MailerTest < ActiveSupport::TestCase end def test_reminders_for_users - Mailer.reminders(:days => 42, :users => ['5']) - assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper - Mailer.reminders(:days => 42, :users => ['3']) - assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper - mail = last_email - assert mail.bcc.include?('dlopper@somenet.foo') - assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail + travel_to Date.today.to_time(:utc) do + Mailer.reminders(:days => 42, :users => ['5']) + assert_equal 0, ActionMailer::Base.deliveries.size # No mail for dlopper + Mailer.reminders(:days => 42, :users => ['3']) + assert_equal 1, ActionMailer::Base.deliveries.size # No mail for dlopper + mail = last_email + assert mail.bcc.include?('dlopper@somenet.foo') + assert_mail_body_match 'Bug #3: Error 281 when updating a recipe (5 days late)', mail + end end def test_reminder_should_include_issues_assigned_to_groups @@ -683,22 +689,24 @@ class MailerTest < ActiveSupport::TestCase group.users << user_dlopper Issue.update_all(:assigned_to_id => nil) - due_date = 10.days.from_now - Issue.update(1, :due_date => due_date, :assigned_to_id => user_dlopper.id) - Issue.update(2, :due_date => due_date, :assigned_to_id => group.id) - Issue.create!(:project_id => 1, :tracker_id => 1, :status_id => 1, - :subject => 'Assigned to group', :assigned_to => group, - :due_date => 5.days.from_now, - :author_id => 2) - ActionMailer::Base.deliveries.clear - - Mailer.reminders(:days => 7) - assert_equal 2, ActionMailer::Base.deliveries.size - assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), recipients - ActionMailer::Base.deliveries.each do |mail| - assert_mail_body_match '1 issue(s) that are assigned to you are due in the next 7 days::', mail - assert_mail_body_match 'Assigned to group (Due in 5 days)', mail - assert_mail_body_match "View all issues (#{mail.bcc.include?('dlopper@somenet.foo') ? 3 : 2} open)", mail + travel_to Date.today.to_time(:utc) do + due_date = 10.days.from_now + Issue.update(1, :due_date => due_date, :assigned_to_id => user_dlopper.id) + Issue.update(2, :due_date => due_date, :assigned_to_id => group.id) + Issue.create!(:project_id => 1, :tracker_id => 1, :status_id => 1, + :subject => 'Assigned to group', :assigned_to => group, + :due_date => 5.days.from_now, + :author_id => 2) + ActionMailer::Base.deliveries.clear + + Mailer.reminders(:days => 7) + assert_equal 2, ActionMailer::Base.deliveries.size + assert_equal %w(dlopper@somenet.foo jsmith@somenet.foo), recipients + ActionMailer::Base.deliveries.each do |mail| + assert_mail_body_match '1 issue(s) that are assigned to you are due in the next 7 days::', mail + assert_mail_body_match 'Assigned to group (Due in 5 days)', mail + assert_mail_body_match "View all issues (#{mail.bcc.include?('dlopper@somenet.foo') ? 3 : 2} open)", mail + end end end end @@ -736,23 +744,25 @@ class MailerTest < ActiveSupport::TestCase 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 + travel_to Date.today.to_time(:utc) do + 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 \(1 day late\)/ - assert_select 'li:nth-child(2)', /bar \(1 day late\)/ - assert_select 'li:nth-child(3)', /baz \(Due in 0 days\)/ - assert_select 'li:nth-child(4)', /qux \(Due in 1 day\)/ - assert_select 'li:nth-child(5)', /quux \(Due in 2 days\)/ + 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 \(1 day late\)/ + assert_select 'li:nth-child(2)', /bar \(1 day late\)/ + assert_select 'li:nth-child(3)', /baz \(Due in 0 days\)/ + assert_select 'li:nth-child(4)', /qux \(Due in 1 day\)/ + assert_select 'li:nth-child(5)', /quux \(Due in 2 days\)/ + end end end