GEM
remote: https://rubygems.org/
specs:
- Ascii85 (1.0.2)
- afm (0.2.0)
- aruba (0.5.3)
- childprocess (>= 0.3.6)
- cucumber (>= 1.1.1)
- rspec-expectations (>= 2.7.0)
+ aruba (0.12.0)
+ childprocess (~> 0.5.6)
+ contracts (~> 0.9)
+ cucumber (>= 1.3.19)
+ event-bus (~> 0.2)
+ ffi (~> 1.9.10)
+ rspec-expectations (>= 2.99)
+ thor (~> 0.19)
builder (3.2.2)
- childprocess (0.3.9)
+ childprocess (0.5.9)
ffi (~> 1.0, >= 1.0.11)
- cucumber (1.3.10)
+ contracts (0.12.0)
+ cucumber (2.1.0)
builder (>= 2.1.2)
+ cucumber-core (~> 1.3.0)
diff-lcs (>= 1.1.3)
- gherkin (~> 2.12)
+ gherkin3 (~> 3.1.0)
multi_json (>= 1.7.5, < 2.0)
- multi_test (>= 0.0.2)
+ multi_test (>= 0.1.2)
+ cucumber-core (1.3.1)
+ gherkin3 (~> 3.1.0)
diff-lcs (1.2.5)
- ffi (1.9.3)
- gherkin (2.12.2)
- multi_json (~> 1.3)
- hashery (2.1.1)
+ event-bus (0.2.3)
+ ffi (1.9.10)
+ gherkin3 (3.1.2)
json (1.7.7)
- mail (2.5.4)
- mime-types (~> 1.16)
- treetop (~> 1.4.8)
- mime-types (1.25.1)
- multi_json (1.8.2)
- multi_test (0.0.2)
- pdf-reader (1.3.3)
- Ascii85 (~> 1.0.0)
- afm (~> 0.2.0)
- hashery (~> 2.0)
- ruby-rc4
- ttfunk
- polyglot (0.3.3)
- prawn (0.12.0)
- pdf-reader (>= 0.9.0)
- ttfunk (~> 1.0.2)
- rspec-expectations (2.14.4)
- diff-lcs (>= 1.1.3, < 2.0)
- ruby-rc4 (0.1.5)
- safe_yaml (0.9.7)
- timecop (0.7.0)
- treetop (1.4.15)
- polyglot
- polyglot (>= 0.3.1)
- ttfunk (1.0.3)
+ mail (2.6.3)
+ mime-types (>= 1.16, < 3)
+ mime-types (2.99)
+ multi_json (1.11.2)
+ multi_test (0.1.2)
+ pdf-core (0.6.0)
+ prawn (2.0.2)
+ pdf-core (~> 0.6.0)
+ ttfunk (~> 1.4.0)
+ rspec-expectations (3.4.0)
+ diff-lcs (>= 1.2.0, < 2.0)
+ rspec-support (~> 3.4.0)
+ rspec-support (3.4.1)
+ safe_yaml (1.0.4)
+ thor (0.19.1)
+ timecop (0.8.0)
+ ttfunk (1.4.0)
PLATFORMS
ruby
end
When /^j'exécute update-ag-subscribers$/ do
- run_simple 'update-ag-subscribers'
+ NosOignons.update_ag_subscribers!
end
When /^(?:que )?j'exécute send-membership-reminders$/ do
end
When /^j'exécute `(create\-membership\-fee\-receipt.*)`$/ do |cmd|
- run_simple cmd, false
+ run_simple cmd, :fail_on_error => false
end
Then /^je ne dois pas avoir eu d'erreur$/ do
- assert_exit_status(0)
+ expect(last_command_started).to have_exit_status(0)
end
Then /^je dois voir comme erreur "(.*?)"$/ do |expected|
- assert_failing_with(expected)
+ expect(last_command_started).to have_output_on_stderr /#{Regexp.escape(expected)}/
end
Then /^la sortie doit être vide$/ do
- assert_exact_output('', @stdout || all_stdout)
+ expect(last_command_started).to have_output_on_stdout('')
end
Then /^la sortie doit être:$/ do |expected|
# add an extra line feed for nice scenario
- assert_exact_output(expected + "\n", @stdout || all_stdout)
+ expect(last_command_started).to have_output_on_stdout(expected)
end
Then /^la sortie doit être "([^"]*)"$/ do |expected|
- assert_exact_output(expected, (@stdout || all_stdout).rstrip)
+ begin
+ expect(last_command_started).to have_output_on_stdout(expected)
+ rescue Aruba::NoCommandHasBeenStartedError
+ expect(@stdout.rstrip).to eq(expected)
+ end
end
# along with this program. If not, see <http://www.gnu.org/licenses/>.
Then /^aucun email ne doit avoir été envoyé$/ do
- Mail::TestMailer.deliveries.should be_empty
+ expect(Mail::TestMailer.deliveries.size).to eq(0)
end
Then /^un appel pour la cotisation doit avoir été envoyé$/ do
- Mail::TestMailer.deliveries.should have(1).email
+ expect(Mail::TestMailer.deliveries.size).to eq(1)
mail = Mail::TestMailer.deliveries.first
expect(mail.from).to eql([NosOignons::BOARD_EMAIL])
expect(mail.to).to eql([@last_member['email']])
end
Then /^(\d+) emails? (?:doit|doivent) avoir été envoyés?$/ do |count|
- Mail::TestMailer.deliveries.should have(count).email
+ expect(Mail::TestMailer.deliveries.size).to eq(count.to_i)
end
Then /^des emails doivent avoir été envoyés à Jane, Fatima, Fred et Moly$/ do
recipients = Mail::TestMailer.deliveries.collect(&:to)
- recipients.should include(['jane@example.org'])
- recipients.should include(['fatima@example.org'])
- recipients.should include(['fred@example.org'])
- recipients.should include(['moly@example.org'])
+ expect(recipients).to include(['jane@example.org'])
+ expect(recipients).to include(['fatima@example.org'])
+ expect(recipients).to include(['fred@example.org'])
+ expect(recipients).to include(['moly@example.org'])
end
Then /^un email doit avoir été envoyé au comité de déontologie$/ do
- expect(Mail::TestMailer.deliveries).to have(1).email
+ expect(Mail::TestMailer.deliveries.size).to eq(1)
expect(Mail::TestMailer.deliveries.first.to).to include('deontologie@nos-oignons.net')
end
Given /^un clone du Git contenant les adhésions$/ do
# Create main repository
- create_dir 'main'
+ @main_repository_path = expand_path('main')
+ create_directory 'main'
cd 'main'
- @main_repository_path = current_dir
run_simple 'git init --quiet --bare'
cd '..'
# Clone it now
- run_simple "git clone --quiet --local file://#{current_dir}/main clone"
+ run_simple "git clone --quiet --local file://#{expand_path('.')}/main clone"
cd 'clone'
- create_dir 'Membres'
+ create_directory 'Membres'
BASE_MEMBERS.each_pair do |number, data|
file = member_filename_for_id(number)
- write_file file, render_member_file(data)
+ File.write file, render_member_file(data)
run_simple "git add #{file}"
end
run_simple 'git commit -m "Initial data set from fixtures"'
Given /^le « pre-commit hook » correctement configuré$/ do
FileUtils.ln_s File.expand_path('../../../bin/pre-commit-hook', __FILE__),
- "#{current_dir}/.git/hooks/pre-commit"
+ "#{expand_path('.')}/.git/hooks/pre-commit"
end
Given /^le « pre-receive hook » configuré sur le dépôt principal$/ do
require 'json'
Before('@mailman') do
- @mock_mailman_db = "#{current_dir}/mock_mailman.json"
+ @mock_mailman_db = expand_path('mock_mailman.json')
init_mailman_mock_db({})
ENV['MOCK_MAILMAN_DB'] = @mock_mailman_db
@orig_path = ENV['PATH']
# along with this program. If not, see <http://www.gnu.org/licenses/>.
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
+ create_directory NosOignons::MEMBERS_DB_DIR
+ @member_db_path = expand_path(NosOignons::MEMBERS_DB_DIR)
+ ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = expand_path('.')
end
def create_new_member(name, joined_on, paid_on)
}
init_db unless @member_db_path
file = member_filename_for_id(new_id)
- write_file file, render_member_file(@last_member)
+ File.write file, render_member_file(@last_member)
end
Given /une base de membres vide$/ do
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)
+ expect(File.read(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)
+ expect(File.read(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))
+ member_path = File.join(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
+ expect(Dir.glob("#{@member_db_path}/[0-9]*").size).to eq(1)
end
When /^j'ajoute une fiche correcte pour une nouvelle adhésion$/ do
@file = member_filename_for_id(new_id)
- write_file @file, render_member_file(EXTRA_MEMBER)
+ File.write @file, render_member_file(EXTRA_MEMBER)
end
When /^j'ajoute une fiche vide$/ do
@file = member_filename_for_id(new_id)
- write_file @file, ''
+ File.write @file, ''
end
When /^j'ajoute une fiche sans YAML$/ do
@file = member_filename_for_id(new_id)
- write_file @file, <<-EOF.gsub(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
Ceci est une fiche sans YAML.
EOF
end
When /^j'ajoute une fiche avec du mauvais YAML$/ do
@file = member_filename_for_id(new_id)
- write_file @file, <<-EOF.gsub(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
---
[This is missing a closing bracket
---
When /^j'ajoute une fiche sans email$/ do
@file = member_filename_for_id(new_id)
- write_file @file, <<-EOF.gsub(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
---
name: J. Example
address: |
When /^j'ajoute une fiche sans nom$/ do
@file = member_filename_for_id(new_id)
- write_file @file, <<-EOF.gsub(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
---
email: joe@example.org
address: |
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(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
---
name: J. Example
email: joe@example.org
When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
@file = member_filename_for_id(new_id)
- write_file @file, <<-EOF.gsub(/^ /, '')
+ File.write @file, <<-EOF.gsub(/^ /, '')
---
name: J. Example
email: joe@example.org
end
When /^j'ajoute un fichier hors de la base des adhérents$/ do
- @file = 'test'
- write_file @file, 'Test content.'
+ @file = expand_path('test')
+ File.write @file, 'Test content.'
end
Then /^le fichier "(.*)" doit avoir été créé avec les reçus$/ do |filename|
@receipt_path = "#{ENV['NOS_OIGNONS_RECEIPTS_DIR']}/#{filename}"
- expect(File.exists?(@receipt_path)).to be_true
+ expect(File.exists?(@receipt_path)).to be_truthy
end
Then /^il doit contenir le nom et l'adresse de (\w+), la date et le montant de la cotisation$/ do |name|
SafeYAML::OPTIONS[:default_mode] = :safe
+Aruba.configure do |config|
+ config.io_wait_timeout = 0.1
+ config.exit_timeout = 20
+end
+
require 'nos_oignons'
Before do
ENV['GIT_COMMITTER_NAME'] = ENV['GIT_AUTHOR_NAME'] = 'J. Test'
ENV['GIT_COMMITTER_EMAIL'] = ENV['GIT_AUTHOR_EMAIL'] = 'test@example.org'
- @tmpdir = Dir.mktmpdir('gestion-adh')
- @dirs = [@tmpdir]
- @aruba_io_wait_seconds = 0.1
- @aruba_timeout_seconds = 20
@orig_wiki_path = ENV['NOS_OIGNONS_BOARD_WIKI_PATH']
@orig_reminder_db_path = ENV['NOS_OIGNONS_REMINDER_DB']
@orig_receipts_dir = ENV['NOS_OIGNONS_RECEIPTS_DIR']
- ENV['NOS_OIGNONS_REMINDER_DB'] = File.join(current_dir, 'reminders.yaml')
+ ENV['NOS_OIGNONS_REMINDER_DB'] = expand_path('reminders.yaml')
NosOignons::ReminderDb.instance.reload!
- ENV['NOS_OIGNONS_RECEIPTS_DIR'] = File.join(current_dir, 'receipts')
+ ENV['NOS_OIGNONS_RECEIPTS_DIR'] = expand_path('receipts')
FileUtils.mkdir(ENV['NOS_OIGNONS_RECEIPTS_DIR'])
Mail.defaults do
delivery_method :test
ENV['NOS_OIGNONS_REMINDER_DB'] = @orig_reminder_db_path
ENV['NOS_OIGNONS_BOARD_WIKI_PATH'] = @orig_wiki_path
ENV['NOS_OIGNONS_RECEIPTS_DIR'] = @orig_receipts_dir
- FileUtils.remove_entry_secure @tmpdir
end
END_OF_TEMPLATE
def member_filename_for_id(id)
- "Membres/%06d.mdwn" % id
+ expand_path("Membres/%06d.mdwn" % id)
end
def render_member_file(locals)
end
def new_id
- max_id = Dir.glob("#{current_dir}/Membres/*.mdwn").
+ max_id = Dir.glob("#{expand_path('Membres')}/*.mdwn").
collect { |f| File.basename(f).gsub(/\.mdwn$/, '').to_i }.max || 0
max_id + 1
end