From 670e24dbeee0a2ff5c6163499ecdad6ba9708708 Mon Sep 17 00:00:00 2001 From: gloas <gloas@git-test.afi-sa.fr> Date: Fri, 4 Oct 2013 09:53:39 +0000 Subject: [PATCH] ajout tests sur validation du formulaire d ajout d une categorie --- .../admin/controllers/UsergroupController.php | 38 ++++++++++--------- library/Class/UserGroup.php | 2 +- .../controllers/UserGroupControllerTest.php | 31 ++++++++++++++- 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/application/modules/admin/controllers/UsergroupController.php b/application/modules/admin/controllers/UsergroupController.php index 804c7bd3a7c..3691be81cef 100644 --- a/application/modules/admin/controllers/UsergroupController.php +++ b/application/modules/admin/controllers/UsergroupController.php @@ -48,9 +48,9 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action { public function addAction() { + $categorie = Class_UserGroupCategorie::find((int)$this->_getParam('id_cat')); $this->view->titre = "Ajouter un groupe d'utilisateurs"; - $new_group = Class_UserGroup::getLoader()->newInstance(); - + $new_group = Class_UserGroup::getLoader()->newInstance()->setCategorie($categorie); $this->_setupGroupFormAndSave('add', $new_group); } @@ -273,13 +273,15 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action { public function cataddAction() { - if ($categorie = $this->_isCategorieSaved()) { + $form = new ZendAfi_Form_UserGroupCategorie(); + $categorie = new Class_UserGroupCategorie(); + if ($this->_isCategorieSaved($categorie,$form)) { $this->_helper->notify($this->view->_('La catégorie "%s" a été ajoutée', $categorie->getLibelle())); $this->_redirect(sprintf('admin/usergroup/index/id_cat/%d', $categorie->getId())); return; } - $this->view->form= new ZendAfi_Form_UserGroupCategorie(); + $this->view->form= $form; $this->view->titre = $this->view->_('Ajouter une catégorie d\'utilisateurs'); if ($categorie_parent = Class_UserGroupCategorie::find((int)$this->_getParam('id'))) $this->view->form->setDefault('parent_id', $categorie_parent->getId()); @@ -301,13 +303,15 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action { function cateditAction() { + $form = new ZendAfi_Form_UserGroupCategorie(); + $categorie = new Class_UserGroupCategorie(); $this->view->titre = "Modifier une catégorie de groupes"; if (!$categorie = Class_UserGroupCategorie::find((int)$this->_getParam('id'))) { $this->_redirect('admin/usergroup'); return; } - if ($this->_isCategorieSaved($categorie)) { + if ($this->_isCategorieSaved($categorie, $form)) { $this->_helper->notify($this->_('La catégorie "%s" a été sauvegardée', $categorie->getLibelle())); $this->_redirect(sprintf('admin/usergroup/index/id_cat/%d', $categorie->getId())); return; @@ -365,20 +369,18 @@ class Admin_UsergroupController extends ZendAfi_Controller_Action { * @param Class_SitothequeCategorie $categorie * @return bool */ - protected function _isCategorieSaved() { - if ($this->_request->isPost()) { - $post = $this->_request->getPost(); - $filter = new Zend_Filter_StripTags(); - $post['libelle'] = trim($filter->filter($this->_request->getPost('libelle'))); - $categorie= (new Class_UserGroupCategorie()); - $categorie - ->updateAttributes($post) - ->save(); - - return $categorie; - } + protected function _isCategorieSaved($categorie,$form) { + if(!$this->_request->isPost()) + return false; - return false; + $post = $this->_request->getPost(); + $filter = new Zend_Filter_StripTags(); + $post['libelle'] = trim($filter->filter($this->_request->getPost('libelle'))); + + $categorie + ->updateAttributes($post); + + return $form->isValid($categorie) ? $categorie->save() : false; } diff --git a/library/Class/UserGroup.php b/library/Class/UserGroup.php index d102453851f..b2197603409 100644 --- a/library/Class/UserGroup.php +++ b/library/Class/UserGroup.php @@ -28,7 +28,7 @@ class Class_UserGroup extends Storm_Model_Abstract { 'users' => [ 'through' => 'user_group_memberships', 'unique' => true ] ]; protected $_belongs_to = ['categorie' => ['model' => 'Class_UserGroupCategorie', - 'referenced_in' => 'ID_CAT']]; + 'referenced_in' => 'id_cat']]; // Les droits doivent être une puissance de 2 (ce sont des masques) const RIGHT_SUIVRE_FORMATION = 1; const RIGHT_DIRIGER_FORMATION = 2; diff --git a/tests/application/modules/admin/controllers/UserGroupControllerTest.php b/tests/application/modules/admin/controllers/UserGroupControllerTest.php index 6facda48a51..0d64c54ac7a 100644 --- a/tests/application/modules/admin/controllers/UserGroupControllerTest.php +++ b/tests/application/modules/admin/controllers/UserGroupControllerTest.php @@ -274,7 +274,7 @@ class Admin_UserGroupControllerAddTest extends Admin_UserGroupControllerTestCase class Admin_UserGroupControllerAddPostTest extends Admin_UserGroupControllerTestCase { public function setUp() { parent::setUp(); - $this->postDispatch('admin/usergroup/add', + $this->postDispatch('admin/usergroup/add/id_cat/2', array('libelle' => 'Intervenants')); } @@ -290,6 +290,13 @@ class Admin_UserGroupControllerAddPostTest extends Admin_UserGroupControllerTest public function responseShouldRedirectToDefaultAction() { $this->assertRedirectTo('/admin/usergroup'); } + + + /** @test */ + public function intervenantShouldBeInCategorieAssociation() { + $this->assertEquals(2, + Class_UserGroup::getLoader()->getFirstAttributeForLastCallOn('save')->getIdCat()); + } } @@ -315,6 +322,28 @@ class Admin_UserGroupControllerAddPostInvalidDataTest extends Admin_UserGroupCon +class Admin_UserGroupCategorieControllerCataddPostInvalidDataTest extends Admin_UserGroupControllerTestCase { + public function setUp() { + parent::setUp(); + $this->postDispatch('admin/usergroup/catadd', + array('libelle' => '')); + } + + + /** @test */ + public function newGroupShouldNotBeCreated() { + $this->assertFalse(Class_UserGroupCategorie::getLoader()->methodHasBeenCalled('save')); + } + + + /** @test */ + public function errorsShouldContainsUneValeurEstRequise() { + $this->assertXPathContentContains('//ul[@class="errors"]', 'Une valeur est requise'); + } +} + + + class Admin_UserGroupControllerEditGroupStagiairesTest extends Admin_UserGroupControllerTestCase { public function setUp() { parent::setUp(); -- GitLab