Lorsque j'exécute send-membership-reminders
Alors un dernier rappel pour la cotisation doit avoir été envoyé
+ Scénario: Appel un mois avant si l’anniversaire est en décembre
+ Soit une base avec Fred qui a adhérée le 2017-12-05 et payé sa dernière cotisation le 2018-12-05
+ Lorsque j'exécute send-membership-reminders le 2019-11-05
+ Alors 1 email doit avoir été envoyé
+
+ Scénario: Appel 30 jours avant si l’anniversaire est en janvier
+ Soit une base avec Bruno qui a adhéré le 2018-01-05 et payé sa dernière cotisation le 2019-01-05
+ Lorsque j'exécute send-membership-reminders le 2019-12-06
+ Alors 1 email doit avoir été envoyé
+
+ Scénario: Premier rappel 10 jours avant si l’anniversaire est en janvier
+ Soit une base avec Bruno qui a adhéré le 2018-01-05 et payé sa dernière cotisation le 2019-01-05
+ Et qui a déjà reçu un appel le 2019-12-06
+ Lorsque j'exécute send-membership-reminders le 2019-12-26
+ Alors 1 email doit avoir été envoyé
+
+ Scénario: Deuxième rappel 2 jours avant si l’anniversaire est au 1er janvier
+ Soit une base avec Bruno qui a adhéré le 2018-01-01 et payé sa dernière cotisation le 2019-01-01
+ Et qui a déjà reçu un appel le 2019-12-02
+ Et qui a déjà reçu un appel le 2019-12-22
+ Lorsque j'exécute send-membership-reminders le 2019-12-30
+ Alors 1 email doit avoir été envoyé
+
Scénario: Plusieurs messages
Soit une base avec Pierre, à jour de cotisation
Et avec Jane qui doit renouveler sa cotisation d'ici 10 jours
create_new_member(name, joined_on, paid_on)
end
-Given /^une base avec (\w+) qui a adhéré le ([0-9-]+) et payé sa dernière cotisation le ([0-9-]+)$/ do |name, joined_on, paid_on|
+Given /^une base avec (\w+) qui a adhérée? le ([0-9-]+) et payé sa dernière cotisation le ([0-9-]+)$/ do |name, joined_on, paid_on|
create_new_member(name, joined_on, paid_on)
end
end
end
+Given /^qui a déjà reçu un appel le ([0-9-]+)$/ do |date|
+ Timecop.travel(Time.parse(date)) do
+ NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member))
+ end
+end
+
When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do
@file = member_filename_for_id(new_id)
File.write @file, render_member_file(EXTRA_MEMBER)
def send_membership_reminders!
today = Time.now.to_date
+ reminders = NosOignons::Reminder.all.sort_by(&:days)
NosOignons::Member.all.select(&:up_to_date?).each do |member|
- next if member.membership_fee_paid_on.year == today.year
- reminders = NosOignons::Reminder.all.sort_by(&:days)
- anniversary = Time.new(today.year, member.joined_on.month,
+ next if member.membership_fee_paid_on.year == (today + reminders.last.days).year
+ anniversary = Time.new(today.next_month.year, member.joined_on.month,
member.joined_on.day).to_date
next if member.membership_fee_paid_on >= anniversary - reminders.last.days
reminders.each do |reminder|