diff --git a/application/modules/admin/controllers/ModoController.php b/application/modules/admin/controllers/ModoController.php index 53bfe5038e801cde2f7536dac828534a2e2ad223..72333d2e8431a785553d1717a657d2ac7355bc00 100644 --- a/application/modules/admin/controllers/ModoController.php +++ b/application/modules/admin/controllers/ModoController.php @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ class Admin_ModoController extends Zend_Controller_Action { + use Trait_Translator; + private $_count = 10; public function indexAction() { @@ -959,10 +961,19 @@ class Admin_ModoController extends Zend_Controller_Action { if ($article) $this->view->subview = $this->view->partial('modo/formulaires.phtml', ['formulaires' => $article->getFormulaires()]); - else + else $this->view->subview = $this->view->partial('modo/articlesformulaires.phtml', ['articles' => Class_Article::articlesWithFormulaire()]); + $this->_forward('index'); } + + public function deleteFormulaireAction() { + $formulaire_to_delete = Class_Formulaire::find($this->_getParam('id')); + $formulaire_to_delete->delete(); + $this->_helper->notify($this->_('Formulaire supprimé')); + $this->_redirect('admin/modo/formulaires/id_article/'.$formulaire_to_delete->getIdArticle()); + } + } \ No newline at end of file diff --git a/application/modules/admin/views/scripts/modo/articlesformulaires.phtml b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml index 88c8d72a30b46f94bf50494679bca06eddaa35a4..809e79382cb4371f9c37eac15b5c4c0bf861e62d 100644 --- a/application/modules/admin/views/scripts/modo/articlesformulaires.phtml +++ b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml @@ -1,8 +1,14 @@ <?php echo '<ul>'; foreach ($this->articles as $article) { -echo '<li> -<a href="formulaires/id_article/'.$article->getId().'">'.$article->getTitre().'</a>'; + echo sprintf('<li><a href="%s">%s</a></li>', + $this->url(['module' => 'admin', + 'controller' => 'modo', + 'action' => 'formulaires', + 'id_article' => $article->getId()], + null, + true), + $article->getTitre()); } echo '</ul>'; ?> \ No newline at end of file diff --git a/application/modules/admin/views/scripts/modo/formulaires.phtml b/application/modules/admin/views/scripts/modo/formulaires.phtml index 8ecc47c8ce855ef6ad251be9fe6799f5b3ab8102..63d57924cf5d66db4c13e5f79e42776a2a4214d3 100644 --- a/application/modules/admin/views/scripts/modo/formulaires.phtml +++ b/application/modules/admin/views/scripts/modo/formulaires.phtml @@ -8,6 +8,6 @@ echo $this->tagModelTable( $this->formulaires, $data_names, $data_names, - [], + [['action' => 'delete-formulaire', 'content' => $this->boutonIco('type=del')]], 'formulaires'); ?> \ No newline at end of file diff --git a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php index a343becefaee177db8f5da7586d0c21999fa3c4e..e921bfa3e6ab1431b893989a3865106957716461 100644 --- a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php +++ b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php @@ -19,36 +19,49 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -class ModoControllerFormulaireForArticleListTest extends Admin_AbstractControllerTestCase { - public function setUp() { - parent::setUp(); +abstract class ModoControllerFormulaireForArticleTestCase extends Admin_AbstractControllerTestCase { + public function setUp() { + parent::setUp(); + $article = Class_Article::newInstanceWithId(12, ['titre' => 'Inscrivez vous au Hackaton']); Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Formulaire') - ->whenCalled('findAllBy') - ->with([ 'role' => 'article', - 'model' => $article, - 'order' => 'date_creation desc']) - ->answers([ - Class_Formulaire::newInstanceWithId(3, ['data' => serialize(['nom' => 'Tinguette', - 'prenom' => 'Quentine'])]), + ->whenCalled('delete') + ->answers(true) + + ->whenCalled('findAllBy') + ->with([ 'role' => 'article', + 'model' => $article, + 'order' => 'date_creation desc']) + ->answers([ + Class_Formulaire::newInstanceWithId(3, ['data' => serialize(['nom' => 'Tinguette', + 'prenom' => 'Quentine']), + 'article' => $article]), + + Class_Formulaire::newInstanceWithId(5, ['data' => serialize(['nom' => 'Bougie', + 'Prenom' => 'Mireille']), + 'article' => $article]), + + Class_Formulaire::newInstanceWithId(6, ['data' => serialize(['name' => 'Lefort', + 'prenom' => 'Nono', + 'age' => 12]), + 'article' => $article]) + ]); + } +} - Class_Formulaire::newInstanceWithId(5, ['data' => serialize(['nom' => 'Bougie', - 'Prenom' => 'Mireille'])]), - Class_Formulaire::newInstanceWithId(6, ['data' => serialize(['name' => 'Lefort', - 'prenom' => 'Nono', - 'age' => 12])]) - ]); +class ModoControllerFormulaireForArticleListTest extends ModoControllerFormulaireForArticleTestCase { + public function setUp() { + parent::setUp(); + $this->dispatch('admin/modo/formulaires/id_article/12', true); } - /** - * @test - */ + /** @test */ public function h1ShouldContainsFormulaires() { $this->assertXPathContentContains('//h1', 'Modération des formulaires'); } @@ -68,17 +81,48 @@ class ModoControllerFormulaireForArticleListTest extends Admin_AbstractControlle /** @test */ public function aLastTDShouldContainsAge12() { - $this->assertXPathContentContains('//td', '12',$this->_response->getBody()); + $this->assertXPathContentContains('//td', '12'); } /** @test */ public function aTDShouldContainsPrenomMireille() { - $this->assertXPathContentContains('//td', 'Mireille',$this->_response->getBody()); + $this->assertXPathContentContains('//td', 'Mireille'); + } + + + /** @test */ + public function aTDShouldContainsActionToDeleteFormulaireMireille() { + $this->assertXPath('//td/a[contains(@href, "admin/modo/delete-formulaire/id_article/12/id/5")]'); + } +} + + + + +class ModoControllerFormulaireForArticleDeleteTest extends ModoControllerFormulaireForArticleTestCase { + public function setUp() { + parent::setUp(); + + $this->dispatch('admin/modo/delete-formulaire/id_article/12/id/5', true); + } + + + /** @test */ + public function formulaireShouldHaveBeenDeleted() { + $this->assertEquals(5, Class_Formulaire::getFirstAttributeForLastCallOn('delete')->getId()); } + + /** @test */ + public function responsShouldRedirectToFormulairesIdArticle12() { + $this->assertRedirectTo('/admin/modo/formulaires/id_article/12'); + } } + + + class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); @@ -101,11 +145,11 @@ class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase /** @test */ public function liShouldContainsLinkToFormulaireForHackaton() { - $this->assertXPathContentContains('//li/a[contains(@href,"formulaires/id_article/4")]', 'Inscrivez vous au Hackaton',$this->_response->getBody()); + $this->assertXPathContentContains('//li/a[contains(@href,"admin/modo/formulaires/id_article/4")]', 'Inscrivez vous au Hackaton',$this->_response->getBody()); } +} -} class ModoControllerFormulaireIndexWithOptionActivatedTest extends Admin_AbstractControllerTestCase { @@ -115,14 +159,16 @@ class ModoControllerFormulaireIndexWithOptionActivatedTest extends Admin_Abstrac $this->dispatch('admin/modo/', true); } + /** @test */ public function linkToModerateFormulairesShouldBePresent() { $this->assertXPath('//a[contains(@href, "/admin/modo/formulaires")]'); } - } + + class ModoControllerFormulaireIndexWithOptionDesactivatedTest extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); @@ -130,11 +176,11 @@ class ModoControllerFormulaireIndexWithOptionDesactivatedTest extends Admin_Abst $this->dispatch('admin/modo/', true); } + /** @test */ public function linkToModerateFormulairesShouldNotBePresent() { $this->assertNotXPath('//a[contains(@href, "/admin/modo/formulaires")]'); } - } ?>