summary | 
shortlog | 
log | 
commit | commitdiff | 
tree
raw | 
patch | 
inline | side by side (from parent 1: 
a0cdfa3)
 
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.
     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
     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
 
   expect(Mail::TestMailer.deliveries.first.body).to include('fred@example.org')
 end
 
   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
+
 
   ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = expand_path('.')
 end
 
   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
 
   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
 Given /une base de membres vide$/ do
   init_db
 end
   expect(Dir.glob("#{@member_db_path}/[0-9]*").size).to eq(1)
 end
 
   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
   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|
 end
 
 Given /^une nouvelle adhésion de (\w+)$/ do |name|
   create_new_member(name, joined_on, joined_on)
 end
 
   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))
 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))
 
     Il vient de `whois cogent.fr`.
 000002:
   name: Sylvain Dufier
     Il vient de `whois cogent.fr`.
 000002:
   name: Sylvain Dufier
-  address: |
-    ORANGE FRANCE
-    13, rue de Javel
-    75015 Paris
   email: sylvain.dufier@orange-ftgroup.com
   joined_on: 2013-05-20
   membership_fee_paid_on: 2013-05-29
   email: sylvain.dufier@orange-ftgroup.com
   joined_on: 2013-05-20
   membership_fee_paid_on: 2013-05-29
 MEMBER_FILE_TEMPLATE = <<'END_OF_TEMPLATE'
 ---
 name: <%= name %>
 MEMBER_FILE_TEMPLATE = <<'END_OF_TEMPLATE'
 ---
 name: <%= name %>
+<% unless address.nil? %>
 address: |
 <%= address.gsub(/^/, '  ').rstrip %>
 address: |
 <%= address.gsub(/^/, '  ').rstrip %>
 email: <%= email %>
 joined_on: <%= joined_on %>
 membership_fee_paid_on: <%= membership_fee_paid_on %>
 email: <%= email %>
 joined_on: <%= joined_on %>
 membership_fee_paid_on: <%= membership_fee_paid_on %>
 
         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
         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
 
             comment faire, écrivez au conseil d'administration. Répondre à cet email
             devrait faire l'affaire.
 
             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 :
 
             Au passage, est-ce que vous pourriez vérifier que l'adresse postale est
             toujours bonne ? Voici celle que nous avons retenu :
 
 
             Si ce n'est plus le cas, c'est chouette de le signaler.
 
 
             Si ce n'est plus le cas, c'est chouette de le signaler.
 
             Au plaisir de continuer l'aventure de Nos oignons avec vous,
             -- 
             Le robot du conseil d'administration
             Au plaisir de continuer l'aventure de Nos oignons avec vous,
             -- 
             Le robot du conseil d'administration