]> nos-oignons.net Git - gestion-adh.git/blob - features/step_definitions/members.rb
Also catch Psych specific exception to identify wrong YAML
[gestion-adh.git] / features / step_definitions / members.rb
1 #-*- coding: utf-8 -*-
2
3 def init_db
4   @member_db_path = File.join(current_dir, NosOignons::MEMBERS_DB_DIR)
5   ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = current_dir
6   create_dir @member_db_path
7 end
8
9 def create_new_member(name, joined_on, paid_on)
10   @last_member = { 'name' => name,
11                    'address' => "At #{name}",
12                    'email' => "#{name.downcase}@example.org",
13                    'joined_on' => joined_on,
14                    'membership_fee_paid_on' => paid_on
15          }
16   init_db unless @member_db_path
17   file = member_filename_for_id(new_id)
18   write_file file, render_member_file(@last_member)
19 end
20
21 Given /une base de membres vide$/ do
22   init_db
23 end
24
25 Given /^(?:une base )?avec (\w+)(, à jour de cotisation| qui n'a pas payé sa cotisation cette année)$/ do |name, uptodate|
26   # ± 15 months ago
27   joined_on = (Time.now - 3600*24*30*15).strftime('%Y-%m-%d')
28   case uptodate
29   when ', à jour de cotisation'
30     # 30 days ago
31     paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
32   else
33     paid_on = joined_on
34   end
35   create_new_member(name, joined_on, paid_on)
36 end
37
38 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|
39   create_new_member(name, joined_on, paid_on)
40 end
41
42 Given /^(?:une base )?avec (\w+) qui doit renouveller sa cotisation d'ici (\d+) jours$/ do |name, days_before_anniversary|
43   paid_on = Time.now.to_date - days_before_anniversary.to_i
44   joined_on = paid_on
45   create_new_member(name, joined_on, paid_on)
46 end
47
48 Given /^une nouvelle adhésion de (\w+)$/ do |name|
49   joined_on = Time.now.strftime('%Y-%m-%d')
50   create_new_member(name, joined_on, joined_on)
51 end
52
53 Given /^elle avait déjà reçu des appels l'année précédente$/ do
54   Timecop.travel(Time.now.to_date - 375) do
55     NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member))
56   end
57 end
58
59 When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do
60   @file = member_filename_for_id(new_id)
61   write_file @file, render_member_file(EXTRA_MEMBER)
62 end
63
64 When /^j'ajoute une fiche vide$/ do
65   @file = member_filename_for_id(new_id)
66   write_file @file, ''
67 end
68
69 When /^j'ajoute une fiche sans YAML$/ do
70   @file = member_filename_for_id(new_id)
71   write_file @file, <<-EOF.gsub(/^    /, '')
72     Ceci est une fiche sans YAML.
73   EOF
74 end
75
76 When /^j'ajoute une fiche avec du mauvais YAML$/ do
77   @file = member_filename_for_id(new_id)
78   write_file @file, <<-EOF.gsub(/^    /, '')
79     ---
80     [This is missing a closing bracket
81     ---
82   EOF
83 end
84
85 When /^j'ajoute une fiche sans email$/ do
86   @file = member_filename_for_id(new_id)
87   write_file @file, <<-EOF.gsub(/^    /, '')
88     ---
89     name: J. Example
90     address: |
91       21 Jump Street
92       42000 Synthé
93     joined_on: 2013-02-20
94     membership_fee_paid_on: 2013-02-20
95     ---
96   EOF
97 end
98
99 When /^j'ajoute une fiche sans nom$/ do
100   @file = member_filename_for_id(new_id)
101   write_file @file, <<-EOF.gsub(/^    /, '')
102     ---
103     email: joe@example.org
104     address: |
105       21 Jump Street
106       42000 Synthé
107     joined_on: 2013-02-20
108     membership_fee_paid_on: 2013-02-20
109     ---
110   EOF
111 end
112
113 When /^j'ajoute une fiche avec comme date d'adhésion "([^"]*)"$/ do |date|
114   @file = member_filename_for_id(new_id)
115   write_file @file, <<-EOF.gsub(/^    /, '')
116     ---
117     name: J. Example
118     email: joe@example.org
119     address: |
120       21 Jump Street
121       42000 Synthé
122     joined_on: #{date}
123     membership_fee_paid_on: 2013-04-04
124     ---
125   EOF
126 end
127
128 When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
129   @file = member_filename_for_id(new_id)
130   write_file @file, <<-EOF.gsub(/^    /, '')
131     ---
132     name: J. Example
133     email: joe@example.org
134     address: |
135       21 Jump Street
136       42000 Synthé
137     joined_on: 2013-04-04
138     membership_fee_paid_on: #{date}
139     ---
140   EOF
141 end
142
143 When /^je supprime le nom sur une fiche existante$/ do
144   @file = member_filename_for_id(1)
145   run_simple "sed -e '/^name:/d' -i #{@file}"
146 end
147
148 When /^j'ajoute un fichier hors de la base des adhérents$/ do
149   @file = 'test'
150   write_file @file, 'Test content.'
151 end