From 5bdc8601ab481f89c9c32ba7ec2e43ebdd7ada71 Mon Sep 17 00:00:00 2001
From: efalcy <efalcy@git-test.afi-sa.fr>
Date: Fri, 16 Nov 2012 10:29:26 +0000
Subject: [PATCH] Formulaires : association Article

---
 .../opac/controllers/FormulaireController.php        |  3 ++-
 library/Class/Article.php                            |  9 +++++++--
 library/Class/Formulaire.php                         |  5 ++++-
 .../opac/controllers/FormulaireControllerTest.php    | 12 ++++++++++--
 tests/library/Class/ArticleFormulaireTest.php        |  4 ++--
 tests/library/Class/FormulaireTest.php               | 11 ++++++++++-
 6 files changed, 35 insertions(+), 9 deletions(-)

diff --git a/application/modules/opac/controllers/FormulaireController.php b/application/modules/opac/controllers/FormulaireController.php
index 9e7de652dfa..51a5dbfd53b 100644
--- a/application/modules/opac/controllers/FormulaireController.php
+++ b/application/modules/opac/controllers/FormulaireController.php
@@ -21,8 +21,9 @@
 class FormulaireController extends ZendAfi_Controller_Action {
 	public function addAction() {
 		$formulaire = new Class_Formulaire();
-		$formulaire->setData(serialize(	 $this->_request->getPost()))
+		$formulaire->setData(serialize($this->_request->getPost()))
 							 ->setUser(Class_Users::getIdentity())
+							 ->setIdArticle($this->_request->getParam('id_article'))
 							 ->save();
 	}
 
diff --git a/library/Class/Article.php b/library/Class/Article.php
index cbb72dee033..c98ba56d315 100644
--- a/library/Class/Article.php
+++ b/library/Class/Article.php
@@ -394,7 +394,12 @@ class Class_Article extends Storm_Model_Abstract {
 													'avis_users' => ['model' => 'Class_Avis',
 																					 'role' => 'article',
 																					 'dependents' => 'delete',
-																					 'order' => 'date_avis desc']];
+																					 'order' => 'date_avis desc'],
+
+													'formulaires' => ['model' => 'Class_Formulaire',
+																						'role' => 'article',
+																						'order' => 'date_creation desc']
+	];
 
 	protected $_belongs_to = ['categorie' => ['model' => 'Class_ArticleCategorie',
 																						'referenced_in' => 'id_cat'],
@@ -734,7 +739,7 @@ class Class_Article extends Storm_Model_Abstract {
 		$replaced_form = preg_replace(['/(<form[^>]+)action=[\"\'][^\"\']+\"? /',
 																	 '/(<form )/'],
 																	['$1 ', 
-																	 '$1action="'.BASE_URL.'/formulaire/add" '],
+																	 '$1action="'.BASE_URL.'/formulaire/add/id_article/'.$this->getId().'" '],
 																	$contenu);
 
 		$typesubmit = 'type=[\'\"](?:submit|button)[\'\"]';
diff --git a/library/Class/Formulaire.php b/library/Class/Formulaire.php
index f86b11f39a1..ebf350e87c7 100644
--- a/library/Class/Formulaire.php
+++ b/library/Class/Formulaire.php
@@ -24,7 +24,10 @@ class Class_Formulaire extends Storm_Model_Abstract {
 
 	protected	$_table_name='formulaires';
 	protected $_belongs_to =  ['user' => ['model' => 'Class_Users',
-																				'referenced_in' => 'id_user']];
+																				'referenced_in' => 'id_user'],
+
+														 'article' => ['model' => 'Class_Article',
+																					 'referenced_in' => 'id_article']];
 
 	protected $_default_attribute_values = ['data' => 'a:0:{}'];
 
diff --git a/tests/application/modules/opac/controllers/FormulaireControllerTest.php b/tests/application/modules/opac/controllers/FormulaireControllerTest.php
index afdd894d30c..0dfc14f7dc4 100644
--- a/tests/application/modules/opac/controllers/FormulaireControllerTest.php
+++ b/tests/application/modules/opac/controllers/FormulaireControllerTest.php
@@ -23,6 +23,9 @@ abstract class FormulaireControllerPostActionTestCase extends Admin_AbstractCont
 	public function setUp() {
 		parent::setUp();
 
+
+		Class_Article::newInstanceWithId(45, ['titre' => 'Contactez nous']);
+
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Formulaire')
 		->whenCalled('save')
 		->willDo(function ($formulaire) {
@@ -52,7 +55,7 @@ class FormulaireControllerPostActionTest extends FormulaireControllerPostActionT
 		ZendAfi_Auth::getInstance()->logUser($user);
 
 
-    $this->postDispatch('/formulaire/add', 
+    $this->postDispatch('/formulaire/add/id_article/45', 
 												['nom' => 'Tinguette' ,
 												 'prenom' => 'Quentin' ]
 												,true);
@@ -80,12 +83,17 @@ class FormulaireControllerPostActionTest extends FormulaireControllerPostActionT
 																	$this->new_formulaire->getData());
 	}
 
+
 	/** @test */
 	public function saveFormulaireShouldSaveUserIdIfConnected() {
 		$this->assertEquals(23, $this->new_formulaire->getIdUser());
-		
 	}
 
+
+	/** @test */
+	public function articleShouldBeContactezNous() {
+		$this->assertEquals('Contactez nous', $this->new_formulaire->getArticle()->getTitre());
+	}
 }
 
 
diff --git a/tests/library/Class/ArticleFormulaireTest.php b/tests/library/Class/ArticleFormulaireTest.php
index 1b1514bd8e8..860e830d6de 100644
--- a/tests/library/Class/ArticleFormulaireTest.php
+++ b/tests/library/Class/ArticleFormulaireTest.php
@@ -42,14 +42,14 @@ class ArticleFormulaireInternalTest extends Storm_Test_ModelTestCase {
 
 	/** @test */
 	public function formIdFormActionShouldBeFormulaireAdd() {
-			$this->assertContains('<form action="'.BASE_URL.'/formulaire/add" id="idform"', 
+			$this->assertContains('<form action="'.BASE_URL.'/formulaire/add/id_article/2" id="idform"', 
 														$this->_article->getContenu());
 	}
 
 
 	/** @test */
 	public function emptyFormActionShouldBeFormulaireAdd() {
-			$this->assertContains('<form action="'.BASE_URL.'/formulaire/add" method="POST">', 
+			$this->assertContains('<form action="'.BASE_URL.'/formulaire/add/id_article/2" method="POST">', 
 														$this->_article->getContenu());
 	}
 
diff --git a/tests/library/Class/FormulaireTest.php b/tests/library/Class/FormulaireTest.php
index e5d330a8bae..7d4e6c444d0 100644
--- a/tests/library/Class/FormulaireTest.php
+++ b/tests/library/Class/FormulaireTest.php
@@ -24,7 +24,7 @@ class FormulaireTest extends Storm_Test_ModelTestCase {
 		parent::setUp();
 		$this->_fantomas = Class_Users::newInstanceWithId(23, ['login' => 'fantomas']);
 		$this->_formulaire = Class_Formulaire::newInstanceWithId(2, ['id_user' => 23]);
-
+		$this->_article = Class_Article::newInstanceWithId(88, []);
 		Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Formulaire')
 		->whenCalled('findAllBy')
 		->answers([$this->_formulaire]);
@@ -43,4 +43,13 @@ class FormulaireTest extends Storm_Test_ModelTestCase {
 		$this->assertEquals([$this->_formulaire], 
 												$this->_fantomas->getFormulaires());
 	}
+
+
+	/** @test */
+	public function articleShouldHaveOneFormulaire() {
+		$this->assertEquals([$this->_formulaire], 
+												$this->_article->getFormulaires());
+	}
+
+
 }
-- 
GitLab