From: Lunar Date: Thu, 2 Jan 2014 09:13:20 +0000 (+0100) Subject: Only send reminders when the time has really come X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/commitdiff_plain/bece9e3f7c399934e613f3701e624f1e14c98455 Only send reminders when the time has really come --- diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index 88609e5..09bdce7 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -65,4 +65,4 @@ Fonctionnalité: prévenir les membres qu'il faut renouveller leur cotisation Et avec Fred qui doit renouveller sa cotisation d'ici 10 jours Et avec Moly qui doit renouveller sa cotisation d'ici 30 jours Lorsque j'exécute send-membership-reminders - Alors 4 emails doivent avoir été envoyés + Alors des emails doivent avoir été envoyés à Jane, Fatima, Fred et Moly diff --git a/features/step_definitions/emails.rb b/features/step_definitions/emails.rb index 2bbecd3..e2e562e 100644 --- a/features/step_definitions/emails.rb +++ b/features/step_definitions/emails.rb @@ -28,6 +28,14 @@ Then /^(\d+) emails? (?:doit|doivent) avoir été envoyés?$/ do |count| Mail::TestMailer.deliveries.should have(count).email end +Then /^des emails doivent avoir été envoyés à Jane, Fatima, Fred et Moly$/ do + recipients = Mail::TestMailer.deliveries.collect(&:to) + recipients.should include(['jane@example.org']) + recipients.should include(['fatima@example.org']) + recipients.should include(['fred@example.org']) + recipients.should include(['moly@example.org']) +end + Then /^un email doit avoir été envoyé au comité de déontologie$/ do expect(Mail::TestMailer.deliveries).to have(1).email expect(Mail::TestMailer.deliveries.first.to).to include('deontologie@nos-oignons.net') diff --git a/lib/nos_oignons.rb b/lib/nos_oignons.rb index 66116bf..758c675 100644 --- a/lib/nos_oignons.rb +++ b/lib/nos_oignons.rb @@ -58,7 +58,9 @@ module NosOignons member.joined_on.day).to_date next if member.membership_fee_paid_on >= anniversary next if member.reminded_on && member.reminded_on >= today - NosOignons::Reminder.all.sort_by(&:days).reverse.each do |reminder| + reminders = NosOignons::Reminder.all.sort_by(&:days).reverse + next if anniversary > today + reminders.first.days + reminders.each do |reminder| next if anniversary < today + reminder.days member.remind(reminder)