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