From b4230b06ef1709d83f7be84e023b831b7771a940 Mon Sep 17 00:00:00 2001
From: Lunar <lunar@anargeek.net>
Date: Sat, 1 Jun 2013 10:56:20 +0200
Subject: [PATCH] Also ensure correctness of membership_fee_paid_on field

---
 features/pre-commit-hook.feature           | 10 ++++++++++
 features/pre-receive-hook.feature          | 10 ++++++++++
 features/step_definitions/subscriptions.rb | 14 ++++++++++++++
 lib/nos_oignons/subscriptions.rb           |  3 +++
 4 files changed, 37 insertions(+)

diff --git a/features/pre-commit-hook.feature b/features/pre-commit-hook.feature
index cbcbcfa..8f59ee3 100644
--- a/features/pre-commit-hook.feature
+++ b/features/pre-commit-hook.feature
@@ -45,6 +45,16 @@ Fonctionnalité: pre-commit hook Git
     Et que je fais un `commit` du nouveau fichier
     Alors je dois voir comme erreur "pas le bon format"
 
+  Scénario: Commit d'une fiche avec une date de cotisation incensée
+    Lorsque j'ajoute une fiche avec comme date de cotisation "2011-99-01"
+    Et que je fais un `commit` du nouveau fichier
+    Alors je dois voir comme erreur "pas le bon format"
+
+  Scénario: Commit d'une fiche avec une mauvaise date de cotisation
+    Lorsque j'ajoute une fiche avec comme date de cotisation "janvier 2013"
+    Et que je fais un `commit` du nouveau fichier
+    Alors je dois voir comme erreur "pas le bon format"
+
   Scénario: Suppression du nom sur une fiche existante
     Lorsque je supprime le nom sur une fiche existante
     Et que je fais un `commit` du nouveau fichier
diff --git a/features/pre-receive-hook.feature b/features/pre-receive-hook.feature
index 7050759..aa7f405 100644
--- a/features/pre-receive-hook.feature
+++ b/features/pre-receive-hook.feature
@@ -45,6 +45,16 @@ Fonctionnalité: pre-receive hook Git
     Et que je pousse la modification
     Alors je dois voir comme erreur "pas le bon format"
 
+  Scénario: Commit d'une fiche avec une date de cotisation incensée
+    Lorsque j'ajoute une fiche avec comme date de cotisation "2011-99-01"
+    Et que je pousse la modification
+    Alors je dois voir comme erreur "pas le bon format"
+
+  Scénario: Commit d'une fiche avec une mauvaise date de cotisation
+    Lorsque j'ajoute une fiche avec comme date de cotisation "janvier 2013"
+    Et que je pousse la modification
+    Alors je dois voir comme erreur "pas le bon format"
+
   Scénario: Suppression du nom sur une fiche existante
     Lorsque je supprime le nom sur une fiche existante
     Et que je pousse la modification
diff --git a/features/step_definitions/subscriptions.rb b/features/step_definitions/subscriptions.rb
index 7b70bd0..e8481f6 100644
--- a/features/step_definitions/subscriptions.rb
+++ b/features/step_definitions/subscriptions.rb
@@ -50,6 +50,20 @@ When /^j'ajoute une fiche sans nom$/ do
   EOF
 end
 
+When /^j'ajoute une fiche avec comme date de cotisation "([^"]*)"$/ do |date|
+  @file = subscription_filename_for_id(new_id)
+  write_file @file, <<-EOF.gsub(/^    /, '')
+    ---
+    name: J. Example
+    email: joe@example.org
+    address: |
+      21 Jump Street
+      42000 Synthé
+    membership_fee_paid_on: #{date}
+    ---
+  EOF
+end
+
 When /^je supprime le nom sur une fiche existante$/ do
   @file = subscription_filename_for_id(1)
   run_simple "sed -e '/^name:/d' -i #{@file}"
diff --git a/lib/nos_oignons/subscriptions.rb b/lib/nos_oignons/subscriptions.rb
index eef7946..2c8585e 100644
--- a/lib/nos_oignons/subscriptions.rb
+++ b/lib/nos_oignons/subscriptions.rb
@@ -15,6 +15,9 @@ def is_valid_subscription?(content)
   ['name', 'email'].each do |key|
     return false unless data.include?(key)
   end
+  if data.include?('membership_fee_paid_on')
+    return false unless data.is_a?(Date)
+  end
   true
 end
 
-- 
2.39.5