]> nos-oignons.net Git - gestion-adh.git/commitdiff
Correction sur les rappels pour les adhésions de janvier
authorLunar <lunar@anargeek.net>
Fri, 18 Jun 2021 15:03:33 +0000 (17:03 +0200)
committerLunar <lunar@anargeek.net>
Fri, 18 Jun 2021 15:03:33 +0000 (17:03 +0200)
features/send-membership-reminders.feature
features/step_definitions/members.rb
lib/nos_oignons.rb

index 89dfbd4b4ba78058384debdfe992127594464043..9526dd1f7c87a2cad364dcc609f5fa7076cf1fb5 100644 (file)
@@ -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
index d3d9b7c5864c1a7966280c8b655bc8047946e4dd..67d31c5fe123f0f6d1f8514ac254ea78e11f5990 100644 (file)
@@ -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)
index 72cea229df4d17cde186b8389b5ff746c0b22d21..e7530788d3662fe75b54206816acb5dfb64b5e1a 100644 (file)
@@ -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|