From dbc09190540223245b4e75fc3c7ea2d0690a1a5b Mon Sep 17 00:00:00 2001 From: Lunar Date: Fri, 18 Jun 2021 17:03:33 +0200 Subject: [PATCH] =?utf8?q?Correction=20sur=20les=20rappels=20pour=20les=20?= =?utf8?q?adh=C3=A9sions=20de=20janvier?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- features/send-membership-reminders.feature | 23 ++++++++++++++++++++++ features/step_definitions/members.rb | 8 +++++++- lib/nos_oignons.rb | 6 +++--- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index 89dfbd4..9526dd1 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -85,6 +85,29 @@ Fonctionnalité: prévenir les membres qu'il faut renouveler leur cotisation 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 diff --git a/features/step_definitions/members.rb b/features/step_definitions/members.rb index d3d9b7c..67d31c5 100644 --- a/features/step_definitions/members.rb +++ b/features/step_definitions/members.rb @@ -59,7 +59,7 @@ Given /^(?:une base )?avec (\w+)(, à jour de cotisation| qui n'a pas payé sa c 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 @@ -118,6 +118,12 @@ Given /^qui a déjà reçu un appel (\d+) jours plus tôt$/ do |days_ago| 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) diff --git a/lib/nos_oignons.rb b/lib/nos_oignons.rb index 72cea22..e753078 100644 --- a/lib/nos_oignons.rb +++ b/lib/nos_oignons.rb @@ -70,10 +70,10 @@ module NosOignons 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| -- 2.39.2