]> nos-oignons.net Git - gestion-adh.git/blobdiff - features/step_definitions/members.rb
Add join date, fix renewal logic and add ability to specify path to wiki-ca
[gestion-adh.git] / features / step_definitions / members.rb
index 8bb03306dec73ecd86dcc82b313655331dd643e7..5bcc39c1bde36dc0c965cee9f8801df6a8eabb04 100644 (file)
@@ -1,37 +1,47 @@
 #-*- coding: utf-8 -*-
 
-Given /une base de membres vide$/ do
-  create_dir 'Membres'
+def init_db
+  @member_db_path = File.join(current_dir, NosOignons::MEMBERS_DB_DIR)
+  ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = current_dir
+  create_dir @member_db_path
 end
 
-Given /^(?:une base )?avec (\w+)(, à jour de cotisation| qui n'a pas payé sa cotisation cette année)$/ do |name, uptodate|
-  case uptodate
-  when ', à jour de cotisation'
-    # ± 1 month ago
-    paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
-  else
-    # ± 15 months ago
-    paid_on = (Time.now - 3600*24*30*15).strftime('%Y-%m-%d')
-  end
+def create_new_member(name, joined_on, paid_on)
   data = { 'name' => name,
            'address' => "At #{name}",
            'email' => "#{name.downcase}@example.org",
+           'joined_on' => joined_on,
            'membership_fee_paid_on' => paid_on
          }
-  create_dir 'Membres'
+  init_db unless @member_db_path
   file = member_filename_for_id(new_id)
   write_file file, render_member_file(data)
 end
 
+Given /une base de membres vide$/ do
+  init_db
+end
+
+Given /^(?:une base )?avec (\w+)(, à jour de cotisation| qui n'a pas payé sa cotisation cette année)$/ do |name, uptodate|
+  # ± 15 months ago
+  joined_on = (Time.now - 3600*24*30*15).strftime('%Y-%m-%d')
+  case uptodate
+  when ', à jour de cotisation'
+    # 30 days ago
+    paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
+  else
+    paid_on = joined_on
+  end
+  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|
+  create_new_member(name, joined_on, paid_on)
+end
+
 Given /^une nouvelle adhésion de (\w+)$/ do |name|
-  data = { 'name' => name,
-           'address' => "At #{name}",
-           'email' => "#{name.downcase}@example.org",
-           'membership_fee_paid_on' => Time.now.strftime('%Y-%m-%d')
-         }
-  create_dir 'Membres'
-  file = member_filename_for_id(new_id)
-  write_file file, render_member_file(data)
+  joined_on = Time.now.strftime('%Y-%m-%d')
+  create_new_member(name, joined_on, joined_on)
 end
 
 When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do
@@ -68,6 +78,7 @@ When /^j'ajoute une fiche sans email$/ do
     address: |
       21 Jump Street
       42000 Synthé
+    joined_on: 2013-02-20
     membership_fee_paid_on: 2013-02-20
     ---
   EOF
@@ -81,11 +92,27 @@ When /^j'ajoute une fiche sans nom$/ do
     address: |
       21 Jump Street
       42000 Synthé
+    joined_on: 2013-02-20
     membership_fee_paid_on: 2013-02-20
     ---
   EOF
 end
 
+When /^j'ajoute une fiche avec comme date d'adhésion "([^"]*)"$/ do |date|
+  @file = member_filename_for_id(new_id)
+  write_file @file, <<-EOF.gsub(/^    /, '')
+    ---
+    name: J. Example
+    email: joe@example.org
+    address: |
+      21 Jump Street
+      42000 Synthé
+    joined_on: #{date}
+    membership_fee_paid_on: 2013-04-04
+    ---
+  EOF
+end
+
 When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
   @file = member_filename_for_id(new_id)
   write_file @file, <<-EOF.gsub(/^    /, '')
@@ -95,6 +122,7 @@ When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
     address: |
       21 Jump Street
       42000 Synthé
+    joined_on: 2013-04-04
     membership_fee_paid_on: #{date}
     ---
   EOF