X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/4c730203fde2eb1d6fdcbe11542c6730d11124ae..9cb7fa95bef77a6d1e0888f741c76adc865f1b17:/features/step_definitions/members.rb diff --git a/features/step_definitions/members.rb b/features/step_definitions/members.rb index 8bb0330..5646009 100644 --- a/features/step_definitions/members.rb +++ b/features/step_definitions/members.rb @@ -1,37 +1,92 @@ #-*- coding: utf-8 -*- +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 + +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 + } + init_db unless @member_db_path + file = member_filename_for_id(new_id) + write_file file, render_member_file(@last_member) +end + Given /une base de membres vide$/ do - create_dir 'Membres' + 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' - # ± 1 month ago + # 30 days 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') + paid_on = joined_on end - data = { 'name' => name, - 'address' => "At #{name}", - 'email' => "#{name.downcase}@example.org", - 'membership_fee_paid_on' => paid_on - } - create_dir 'Membres' - file = member_filename_for_id(new_id) - write_file file, render_member_file(data) + 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 base avec (\w+), membre (\w+), ayant cotisé le ([0-9-]+)$/ do |name, member_id, paid_on| + create_new_member(name, paid_on, paid_on) + expect(File.read(File.join(current_dir, member_filename_for_id(member_id)))).to include(name) +end + +Given /^une base avec (\w+), membre (\w+), n'ayant jamais cotisé$/ do |name, member_id| + joined_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d') + create_new_member(name, joined_on, nil) + expect(File.read(File.join(current_dir, member_filename_for_id(member_id)))).to include(name) +end + +Given /^une base avec uniquement (\w+), membre (\w+)$/ do |name, member_id| + paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d') + create_new_member(name, paid_on, paid_on) + member_path = File.join(current_dir, member_filename_for_id(member_id)) + expect(File.read(member_path)).to include(name) + expect(Dir.glob("#{@member_db_path}/[0-9]*")).to have(1).member +end + + +Given /^(?:une base )?avec (\w+) qui doit renouveller sa cotisation d'ici (\d+) jours$/ do |name, 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) 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 + +Given /^une nouvelle adhésion de (\w+) qui a payé sa cotisation il y a (\d+) jours$/ do |name, days| + joined_on = (Time.now.to_date - days.to_i).strftime('%Y-%m-%d') + 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)) + end +end + +Given /^qui a déjà reçu un appel (\d+) jours plus tôt$/ do |days_ago| + Timecop.travel(Time.now.to_date - days_ago.to_i) do + NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member)) + end end When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do @@ -68,6 +123,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 +137,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 +167,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