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