]> nos-oignons.net Git - gestion-adh.git/blob - features/step_definitions/members.rb
4b8ab66bcc14e029e0961646c0d338959d821d31
[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+), membre (\w+), ayant cotisé le ([0-9-]+)$/ do |name, member_id, paid_on|
43   create_new_member(name, paid_on, paid_on)
44   expect(File.read(File.join(current_dir, member_filename_for_id(member_id)))).to include(name)
45 end
46
47 Given /^une base avec (\w+), membre (\w+), n'ayant jamais cotisé$/ do |name, member_id|
48   joined_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
49   create_new_member(name, joined_on, nil)
50   expect(File.read(File.join(current_dir, member_filename_for_id(member_id)))).to include(name)
51 end
52
53 Given /^une base avec uniquement (\w+), membre (\w+)$/ do |name, member_id|
54   paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
55   create_new_member(name, paid_on, paid_on)
56   member_path = File.join(current_dir, member_filename_for_id(member_id))
57   expect(File.read(member_path)).to include(name)
58   expect(Dir.glob("#{@member_db_path}/[0-9]*")).to have(1).member
59 end
60
61
62 Given /^(?:une base )?avec (\w+) qui doit renouveler sa cotisation d'ici (\d+) jours$/ do |name, days_before_anniversary|
63   now = Time.now
64   paid_on = Time.new(now.year - 1, now.month, now.day).to_date + days_before_anniversary.to_i
65   joined_on = paid_on
66   create_new_member(name, joined_on, paid_on)
67 end
68
69 Given /^une nouvelle adhésion de (\w+)$/ do |name|
70   joined_on = Time.now.strftime('%Y-%m-%d')
71   create_new_member(name, joined_on, joined_on)
72 end
73
74 Given /^une nouvelle adhésion de (\w+) qui a payé sa cotisation il y a (\d+) jours$/ do |name, days|
75   joined_on = (Time.now.to_date - days.to_i).strftime('%Y-%m-%d')
76   create_new_member(name, joined_on, joined_on)
77 end
78
79
80 Given /^elle avait déjà reçu des appels l'année précédente$/ do
81   Timecop.travel(Time.now.to_date - 375) do
82     NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member))
83   end
84 end
85
86 Given /^qui a déjà reçu un appel (\d+) jours plus tôt$/ do |days_ago|
87   Timecop.travel(Time.now.to_date - days_ago.to_i) do
88     NosOignons::ReminderDb.instance.record(OpenStruct.new(@last_member))
89   end
90 end
91
92 When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do
93   @file = member_filename_for_id(new_id)
94   write_file @file, render_member_file(EXTRA_MEMBER)
95 end
96
97 When /^j'ajoute une fiche vide$/ do
98   @file = member_filename_for_id(new_id)
99   write_file @file, ''
100 end
101
102 When /^j'ajoute une fiche sans YAML$/ do
103   @file = member_filename_for_id(new_id)
104   write_file @file, <<-EOF.gsub(/^    /, '')
105     Ceci est une fiche sans YAML.
106   EOF
107 end
108
109 When /^j'ajoute une fiche avec du mauvais YAML$/ do
110   @file = member_filename_for_id(new_id)
111   write_file @file, <<-EOF.gsub(/^    /, '')
112     ---
113     [This is missing a closing bracket
114     ---
115   EOF
116 end
117
118 When /^j'ajoute une fiche sans email$/ do
119   @file = member_filename_for_id(new_id)
120   write_file @file, <<-EOF.gsub(/^    /, '')
121     ---
122     name: J. Example
123     address: |
124       21 Jump Street
125       42000 Synthé
126     joined_on: 2013-02-20
127     membership_fee_paid_on: 2013-02-20
128     ---
129   EOF
130 end
131
132 When /^j'ajoute une fiche sans nom$/ do
133   @file = member_filename_for_id(new_id)
134   write_file @file, <<-EOF.gsub(/^    /, '')
135     ---
136     email: joe@example.org
137     address: |
138       21 Jump Street
139       42000 Synthé
140     joined_on: 2013-02-20
141     membership_fee_paid_on: 2013-02-20
142     ---
143   EOF
144 end
145
146 When /^j'ajoute une fiche avec comme date d'adhésion "([^"]*)"$/ do |date|
147   @file = member_filename_for_id(new_id)
148   write_file @file, <<-EOF.gsub(/^    /, '')
149     ---
150     name: J. Example
151     email: joe@example.org
152     address: |
153       21 Jump Street
154       42000 Synthé
155     joined_on: #{date}
156     membership_fee_paid_on: 2013-04-04
157     ---
158   EOF
159 end
160
161 When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
162   @file = member_filename_for_id(new_id)
163   write_file @file, <<-EOF.gsub(/^    /, '')
164     ---
165     name: J. Example
166     email: joe@example.org
167     address: |
168       21 Jump Street
169       42000 Synthé
170     joined_on: 2013-04-04
171     membership_fee_paid_on: #{date}
172     ---
173   EOF
174 end
175
176 When /^je supprime le nom sur une fiche existante$/ do
177   @file = member_filename_for_id(1)
178   run_simple "sed -e '/^name:/d' -i #{@file}"
179 end
180
181 When /^j'ajoute un fichier hors de la base des adhérents$/ do
182   @file = 'test'
183   write_file @file, 'Test content.'
184 end