From e3849b258d72a17748bd07c931980d382ac88082 Mon Sep 17 00:00:00 2001 From: Lunar Date: Sat, 12 Apr 2014 16:08:29 +0200 Subject: [PATCH] =?utf8?q?Correction=20des=20rappels=20d'adh=C3=A9sion=20l?= =?utf8?q?orsque=20le=20renouvellement=20a=20=C3=A9t=C3=A9=20fait=20avant?= =?utf8?q?=20la=20date=20anniversaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- features/send-membership-reminders.feature | 5 +++++ features/step_definitions/commands.rb | 6 ++++++ lib/nos_oignons.rb | 4 ++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index bf08afb..a7921bc 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -41,6 +41,11 @@ Fonctionnalité: prévenir les membres qu'il faut renouveler leur cotisation Lorsque j'exécute send-membership-reminders Alors aucun email ne doit avoir été envoyé + Scénario: Renouvellement de la cotisation avant la date anniversaire + Soit une base avec Christian qui a adhéré le 2013-04-22 et payé sa dernière cotisation le 2014-03-24 + Lorsque j'exécute send-membership-reminders le 2014-04-12 + Alors aucun email ne doit avoir été envoyé + Scénario: Script pas exécuté tous les jours Soit une base avec Jane qui doit renouveler sa cotisation d'ici 9 jours Et qui a déjà reçu un appel 21 jours plus tôt diff --git a/features/step_definitions/commands.rb b/features/step_definitions/commands.rb index cde2215..28e0ab3 100644 --- a/features/step_definitions/commands.rb +++ b/features/step_definitions/commands.rb @@ -25,6 +25,12 @@ When /^(?:que )?j'exécute send-membership-reminders$/ do NosOignons.send_membership_reminders! end +When /^(?:que )?j'exécute send-membership-reminders le ([0-9]{4})-([0-9]{2})-([0-9]{2})$/ do |year, month, day| + Timecop.travel(Date.new(year.to_i, month.to_i, day.to_i)) do + NosOignons.send_membership_reminders! + end +end + When /^j'exécute send\-member\-emails\-to\-advisors$/ do NosOignons.send_member_emails_to_advisors! end diff --git a/lib/nos_oignons.rb b/lib/nos_oignons.rb index 4ccd04f..dec787e 100644 --- a/lib/nos_oignons.rb +++ b/lib/nos_oignons.rb @@ -54,10 +54,10 @@ module NosOignons def send_membership_reminders! today = Time.now.to_date NosOignons::Member.all.select(&:up_to_date?).each do |member| + reminders = NosOignons::Reminder.all.sort_by(&:days) anniversary = Time.new(today.year, member.joined_on.month, member.joined_on.day).to_date - next if member.membership_fee_paid_on >= anniversary - reminders = NosOignons::Reminder.all.sort_by(&:days) + next if member.membership_fee_paid_on >= anniversary - reminders.last.days reminders.each do |reminder| next if (anniversary - today).to_i > reminder.days next if member.reminded_on && (anniversary - member.reminded_on).to_i <= reminder.days -- 2.39.2