#-*- coding: utf-8 -*-

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
  run_simple 'update-ag-subscribers'
end

When /^(?:que )?j'exécute send-membership-reminders$/ do
  NosOignons.send_membership_reminders!
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, false
end

Then /^je ne dois pas avoir eu d'erreur$/ do
  assert_exit_status(0)
end

Then /^je dois voir comme erreur "(.*?)"$/ do |expected|
  assert_failing_with(expected)
end

Then /^la sortie doit être vide$/ do
  assert_exact_output('', @stdout || all_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)
end

Then /^la sortie doit être "([^"]*)"$/ do |expected|
  assert_exact_output(expected, (@stdout || all_stdout).rstrip)
end
