From: Lunar <lunar@anargeek.net>
Date: Sat, 1 Jun 2013 11:02:16 +0000 (+0200)
Subject: Continue implementing list-emails
X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/commitdiff_plain/febcaa4d9fbe691c63473c2129788c0dbbe5cce0?ds=sidebyside;hp=9ef89e25a8f7758e1a3478d0c455c9254dff9112

Continue implementing list-emails
---

diff --git a/bin/list-emails b/bin/list-emails
index 569571e..4c8a286 100755
--- a/bin/list-emails
+++ b/bin/list-emails
@@ -8,6 +8,10 @@ Bundler.setup
 require 'nos_oignons/subscriptions'
 
 subscriptions = read_subscriptions
+now = Time.now
+last_year = Time.new(now.year - 1, now.month, now.day).to_date
 subscriptions.each_pair do |subscription_id, data|
-  puts data['email']
+  if data['membership_fee_paid_on'] && last_year < data['membership_fee_paid_on']
+    puts data['email']
+  end
 end
diff --git a/features/list-emails.feature b/features/list-emails.feature
index 27c2a9e..161600f 100644
--- a/features/list-emails.feature
+++ b/features/list-emails.feature
@@ -8,7 +8,7 @@ Fonctionnalité: obtenir les emails des membres à jour de cotisations
   Scénario: Aucun membre enregistré
     Soit une base de membres vide
     Lorsque j'exécute list-emails
-    Alors la sortie doit-être vide
+    Alors la sortie doit être vide
 
   Scénario: Un membre à jour de cotisation
     Soit une base avec Pierre, à jour de cotisation
@@ -19,7 +19,7 @@ Fonctionnalité: obtenir les emails des membres à jour de cotisations
       """
 
   Scénario: Un ancien membre
-    Soit une base avec Pierre, qui n'a pas payé sa cotisation cette année
+    Soit une base avec Pierre qui n'a pas payé sa cotisation cette année
     Lorsque j'exécute list-emails
     Alors la sortie doit être vide
 
@@ -36,7 +36,7 @@ Fonctionnalité: obtenir les emails des membres à jour de cotisations
       """
 
   Scénario: Des membres à jour et d'autres pas
-    Soit une base avec Pierre, qui n'a pas payé sa cotisation cette année
+    Soit une base avec Pierre qui n'a pas payé sa cotisation cette année
     Et avec Jane, à jour de cotisation
     Et avec Fatima, à jour de cotisation
     Lorsque j'exécute list-emails
diff --git a/features/step_definitions/commands.rb b/features/step_definitions/commands.rb
index ce9c5da..54bc747 100644
--- a/features/step_definitions/commands.rb
+++ b/features/step_definitions/commands.rb
@@ -10,8 +10,8 @@ Then /^je dois voir comme erreur "(.*?)"$/ do |expected|
   assert_failing_with(expected)
 end
 
-Then /^la sortie doit-être vide$/ do
-  expect(all_output).to be_empty
+Then /^la sortie doit être vide$/ do
+  assert_exact_output('', all_stdout)
 end
 
 Then /^la sortie doit être:$/ do |expected|
diff --git a/features/step_definitions/subscriptions.rb b/features/step_definitions/subscriptions.rb
index 62306e9..571a2c2 100644
--- a/features/step_definitions/subscriptions.rb
+++ b/features/step_definitions/subscriptions.rb
@@ -1,14 +1,22 @@
+#-*- coding: utf-8 -*-
+
 Given /une base de membres vide$/ do
   create_dir 'Membres'
 end
 
-Given /^une base avec (\w+), à jour de cotisation$/ do |name|
+Given /^une base avec (\w+)(, à jour de cotisation| qui n'a pas payé sa cotisation cette année)$/ do |name, uptodate|
+  case uptodate
+  when ', à jour de cotisation'
+    # ± 1 month ago
+    paid_on = (Time.now - 3600*24*30).strftime('%Y-%m-%d')
+  else
+    # ± 15 months ago
+    paid_on = (Time.now - 3600*24*30*15).strftime('%Y-%m-%d')
+  end
   data = { 'name' => name,
            'address' => "At #{name}",
            'email' => "#{name.downcase}@example.org",
-           'membership_fee_paid_on' =>
-              # one month ago
-              (Time.now - 3600*24*30).strftime('%Y-%m-%d')
+           'membership_fee_paid_on' => paid_on
          }
   create_dir 'Membres'
   file = subscription_filename_for_id(new_id)
diff --git a/features/support/env.rb b/features/support/env.rb
index e647e2f..afaec33 100644
--- a/features/support/env.rb
+++ b/features/support/env.rb
@@ -13,6 +13,7 @@ Before do
   ENV['GIT_COMMITTER_EMAIL'] = ENV['GIT_AUTHOR_EMAIL'] = 'test@example.org'
   @tmpdir = Dir.mktmpdir('gestion-adh')
   @dirs = [@tmpdir]
+  @aruba_io_wait_seconds = 0.5
 end
 
 After do