From 76f86b5fd3f52363a3ce219310062270ee4eb52a Mon Sep 17 00:00:00 2001 From: Lunar Date: Wed, 6 Sep 2017 13:05:54 +0200 Subject: [PATCH] Modification du traitement des adresses postales pour les rendre optionnelles MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Comme discuté sur au sein du Conseil d'Administration, les adresses postales sont maintenant optionelles dans la base des membres. Elles ne seront simplement pas mentionnées dans le mail de relance ou sur les reçus. --- features/send-membership-reminders.feature | 10 +++++++ features/step_definitions/emails.rb | 12 ++++++++ features/step_definitions/members.rb | 35 +++++++++++++++------- features/support/fixtures.rb | 6 ++-- lib/nos_oignons/receipt.rb | 2 +- lib/nos_oignons/reminder.rb | 2 ++ 6 files changed, 51 insertions(+), 16 deletions(-) diff --git a/features/send-membership-reminders.feature b/features/send-membership-reminders.feature index a7921bc..47cabf5 100644 --- a/features/send-membership-reminders.feature +++ b/features/send-membership-reminders.feature @@ -83,3 +83,13 @@ Fonctionnalité: prévenir les membres qu'il faut renouveler leur cotisation Et avec Moly qui doit renouveler sa cotisation d'ici 30 jours Lorsque j'exécute send-membership-reminders Alors des emails doivent avoir été envoyés à Jane, Fatima, Fred et Moly + + Scénario: Envoi de l'appel avec une adresse postale + Soit une base avec Sophie ayant une adresse postale et qui doit renouveler sa cotisation d'ici 30 jours + Lorsque j'exécute send-membership-reminders + Alors l'appel pour la cotisation doit demander confirmation de l'adresse postale + + Scénario: Envoi de l'appel sans adresse postale + Soit une base avec Sylvain qui n'a pas d'adresse postale et qui doit renouveler sa cotisation d'ici 30 jours + Lorsque j'exécute send-membership-reminders + Alors l'appel pour la cotisation ne doit pas parler de l'adresse postale diff --git a/features/step_definitions/emails.rb b/features/step_definitions/emails.rb index e5e4fab..9452d38 100644 --- a/features/step_definitions/emails.rb +++ b/features/step_definitions/emails.rb @@ -62,3 +62,15 @@ Then /^il doit contenir les adresses emails de Jane et Fred$/ do expect(Mail::TestMailer.deliveries.first.body).to include('fred@example.org') end +Then /^l'appel pour la cotisation doit demander confirmation de l'adresse postale$/ do + mail = Mail::TestMailer.deliveries.first + expect(mail.body).to include("vérifier que l'adresse postale") + expect(mail.body).to include(@last_member['address']) +end + + +Then /^l'appel pour la cotisation ne doit pas parler de l'adresse postale$/ do + mail = Mail::TestMailer.deliveries.first + expect(mail.body).to_not include("vérifier que l'adresse postale") +end + diff --git a/features/step_definitions/members.rb b/features/step_definitions/members.rb index 0ec5ae1..d3d9b7c 100644 --- a/features/step_definitions/members.rb +++ b/features/step_definitions/members.rb @@ -22,18 +22,26 @@ def init_db ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = expand_path('.') end -def create_new_member(name, joined_on, paid_on) - @last_member = { 'name' => name, - 'address' => "At #{name}", - 'email' => "#{name.downcase}@example.org", - 'joined_on' => joined_on, - 'membership_fee_paid_on' => paid_on - } +def new_member_data(name, joined_on, paid_on) + { 'name' => name, + 'address' => "At #{name}", + 'email' => "#{name.downcase}@example.org", + 'joined_on' => joined_on, + 'membership_fee_paid_on' => paid_on + } +end + +def add_member(member_data) + @last_member = member_data init_db unless @member_db_path file = member_filename_for_id(new_id) File.write file, render_member_file(@last_member) end +def create_new_member(*args) + add_member(new_member_data(*args)) +end + Given /une base de membres vide$/ do init_db end @@ -74,12 +82,18 @@ Given /^une base avec uniquement (\w+), membre (\w+)$/ do |name, member_id| expect(Dir.glob("#{@member_db_path}/[0-9]*").size).to eq(1) end - -Given /^(?:une base )?avec (\w+) qui doit renouveler sa cotisation d'ici (\d+) jours$/ do |name, days_before_anniversary| +Given /^(?:une base )?avec (\w+) (ayant une adresse postale et |qui n'a pas d'adresse postale et )?qui doit renouveler sa cotisation d'ici (\d+) jours$/ do |name, address_status, days_before_anniversary| now = Time.now paid_on = Time.new(now.year - 1, now.month, now.day).to_date + days_before_anniversary.to_i joined_on = paid_on - create_new_member(name, joined_on, paid_on) + member_data = new_member_data(name, joined_on, paid_on) + case address_status + when /ayant/ + member_data['address'] = "At #{name}'s" + when /qui n'a pas/ + member_data.delete('address') + end + add_member(member_data) end Given /^une nouvelle adhésion de (\w+)$/ do |name| @@ -92,7 +106,6 @@ Given /^une nouvelle adhésion de (\w+) qui a payé sa cotisation il y a (\d+) j create_new_member(name, joined_on, joined_on) end - Given /^elle avait déjà reçu des appels l'année précédente$/ do Timecop.travel(Time.now.to_date - 375) do NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member)) diff --git a/features/support/fixtures.rb b/features/support/fixtures.rb index 42d46ee..0d01e20 100644 --- a/features/support/fixtures.rb +++ b/features/support/fixtures.rb @@ -35,10 +35,6 @@ BASE_MEMBERS = YAML.load(< +<% unless address.nil? %> address: | <%= address.gsub(/^/, ' ').rstrip %> +<% end %> email: <%= email %> joined_on: <%= joined_on %> membership_fee_paid_on: <%= membership_fee_paid_on %> diff --git a/lib/nos_oignons/receipt.rb b/lib/nos_oignons/receipt.rb index 81971c7..c42333f 100644 --- a/lib/nos_oignons/receipt.rb +++ b/lib/nos_oignons/receipt.rb @@ -61,7 +61,7 @@ module NosOignons end end pdf.bounding_box([WINDOW_LEFT - pdf.bounds.absolute_left, pdf.bounds.absolute_top - WINDOW_TOP], :width => WINDOW_WIDTH, :height => WINDOW_BOTTOM - WINDOW_TOP) do - pdf.text member.name + "\n" + member.address, :valign => :bottom + pdf.text member.name + "\n" + (member.address || ''), :valign => :bottom end end diff --git a/lib/nos_oignons/reminder.rb b/lib/nos_oignons/reminder.rb index a923e6b..e6d9234 100644 --- a/lib/nos_oignons/reminder.rb +++ b/lib/nos_oignons/reminder.rb @@ -38,6 +38,7 @@ module NosOignons comment faire, écrivez au conseil d'administration. Répondre à cet email devrait faire l'affaire. + <% unless member.address.nil? %> Au passage, est-ce que vous pourriez vérifier que l'adresse postale est toujours bonne ? Voici celle que nous avons retenu : @@ -45,6 +46,7 @@ module NosOignons Si ce n'est plus le cas, c'est chouette de le signaler. + <% end %> Au plaisir de continuer l'aventure de Nos oignons avec vous, -- Le robot du conseil d'administration -- 2.39.2