]> nos-oignons.net Git - gestion-adh.git/blobdiff - features/step_definitions/commands.rb
Update to Ruby 2+, RSpec 3 and recent Aruba
[gestion-adh.git] / features / step_definitions / commands.rb
index ce9c5daa6c89e7756a69ea90fac3f7c29bc9e565..e0b5ea4a3737ee5483728b508178a45aa564e017 100644 (file)
@@ -1,20 +1,81 @@
+#-*- coding: utf-8 -*-
+#
+# Système de gestion des adhésions de Nos oignons
+# Copyright © 2013-2014 Nos oignons <contact@nos-oignons.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
 When /^j'exécute list\-emails$/ do
   run_simple 'list-emails'
 end
 
+When /^j'exécute list-emails le (\d+)\-(\d+)\-(\d+)$/ do |year, month, day|$/
+  Timecop.travel(Time.new(year, month, day)) do
+    stdout_io = StringIO.new
+    begin
+      $stdout = stdout_io
+      NosOignons.list_emails!
+      @stdout = stdout_io.string
+    ensure
+      $stdout = STDOUT
+    end
+  end
+end
+
+When /^j'exécute update-ag-subscribers$/ do
+  NosOignons.update_ag_subscribers!
+end
+
+When /^(?:que )?j'exécute send-membership-reminders$/ do
+  NosOignons.send_membership_reminders!
+end
+
+When /^(?:que )?j'exécute send-membership-reminders le ([0-9]{4})-([0-9]{2})-([0-9]{2})$/ do |year, month, day|
+  Timecop.travel(Date.new(year.to_i, month.to_i, day.to_i)) do
+    NosOignons.send_membership_reminders!
+  end
+end
+
+When /^j'exécute send\-member\-emails\-to\-advisors$/ do
+  NosOignons.send_member_emails_to_advisors!
+end
+
+When /^j'exécute `(create\-membership\-fee\-receipt.*)`$/ do |cmd|
+  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
-  expect(all_output).to be_empty
+Then /^la sortie doit être vide$/ do
+  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", all_stdout)
+  expect(last_command_started).to have_output_on_stdout(expected)
+end
+
+Then /^la sortie doit être "([^"]*)"$/ do |expected|
+  begin
+    expect(last_command_started).to have_output_on_stdout(expected)
+  rescue Aruba::NoCommandHasBeenStartedError
+    expect(@stdout.rstrip).to eq(expected)
+  end
 end