From 7160caf7d4323b5c0ce593e9476db01b76ee26ea Mon Sep 17 00:00:00 2001 From: llaffont <llaffont@git-test.afi-sa.fr> Date: Sat, 17 Nov 2012 14:45:32 +0000 Subject: [PATCH] =?UTF-8?q?Affichage=20du=20nombre=20de=20formulaires=20re?= =?UTF-8?q?stant=20=C3=A0=20mod=C3=A9rer=20dans=20tous=20les=20indicateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scripts/modo/articlesformulaires.phtml | 3 +- library/Class/Article.php | 6 +++- library/Class/Formulaire.php | 11 ++++++- library/Class/Moderer.php | 2 +- .../ModoControllerFormulaireTest.php | 32 ++++++++++++++++--- 5 files changed, 46 insertions(+), 8 deletions(-) diff --git a/application/modules/admin/views/scripts/modo/articlesformulaires.phtml b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml index 58087f07009..13edd99c7b1 100644 --- a/application/modules/admin/views/scripts/modo/articlesformulaires.phtml +++ b/application/modules/admin/views/scripts/modo/articlesformulaires.phtml @@ -1,7 +1,7 @@ <?php echo '<ul>'; foreach ($this->articles as $article) { - echo sprintf('<li><a href="%s">%s [%d]</a></li>', + echo sprintf('<li><a href="%s">%s [%d/%d]</a></li>', $this->url(['module' => 'admin', 'controller' => 'modo', 'action' => 'formulaires', @@ -9,6 +9,7 @@ foreach ($this->articles as $article) { null, true), $article->getTitre(), + $article->numberOfFormulairesToValidate(), $article->numberOfFormulaires()); } echo '</ul>'; diff --git a/library/Class/Article.php b/library/Class/Article.php index 26e49e8b80d..59a2de89144 100644 --- a/library/Class/Article.php +++ b/library/Class/Article.php @@ -403,7 +403,11 @@ class Class_Article extends Storm_Model_Abstract { 'formulaires' => ['model' => 'Class_Formulaire', 'role' => 'article', - 'order' => 'date_creation desc'] + 'order' => 'date_creation desc'], + + 'formulaires_to_validate' => ['model' => 'Class_Formulaire', + 'role' => 'article', + 'scope' => ['validated' => false]] ]; protected $_belongs_to = ['categorie' => ['model' => 'Class_ArticleCategorie', diff --git a/library/Class/Formulaire.php b/library/Class/Formulaire.php index 1febed9f581..81a5fc16801 100644 --- a/library/Class/Formulaire.php +++ b/library/Class/Formulaire.php @@ -19,9 +19,18 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +class FormulaireLoader extends Storm_Model_Loader { + public function countNotValidated() { + return Class_Formulaire::countBy(['validated' => false]); + } +} + + + + class Class_Formulaire extends Storm_Model_Abstract { use Trait_TimeSource; - + protected $_loader_class = 'FormulaireLoader'; protected $_table_name='formulaires'; protected $_belongs_to = ['user' => ['model' => 'Class_Users', 'referenced_in' => 'id_user'], diff --git a/library/Class/Moderer.php b/library/Class/Moderer.php index 7fafebcc240..f3cab8c77d3 100644 --- a/library/Class/Moderer.php +++ b/library/Class/Moderer.php @@ -118,7 +118,7 @@ class Class_Moderer { if (Class_AdminVar::isCmsFormulairesEnabled()) { $moderations['formulaires'] =['label' => $translate->_('Formulaires'), 'url' => BASE_URL . '/admin/modo/formulaires', - 'count' => Class_Formulaire::count()]; + 'count' => Class_Formulaire::countNotValidated()]; } $this->_moderation_stats = $moderations; diff --git a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php index 321896ece8f..d3e6ecd2571 100644 --- a/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php +++ b/tests/application/modules/admin/controllers/ModoControllerFormulaireTest.php @@ -36,6 +36,7 @@ abstract class ModoControllerFormulaireForArticleTestCase extends Admin_Abstract ->with([ 'role' => 'article', 'model' => $article, 'order' => 'date_creation desc']) + ->answers([ Class_Formulaire::newInstanceWithId(3, ['data' => serialize(['nom' => 'Tinguette', 'prenom' => 'Quentine']), @@ -264,10 +265,27 @@ class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase 'role' => 'article']) ->answers(2) + ->whenCalled('countBy') + ->with(['model' => $hackaton, + 'role' => 'article', + 'scope' => ['validated' => false]]) + ->answers(2) + ->whenCalled('countBy') ->with(['model' => $preinscription, 'role' => 'article']) - ->answers(4); + ->answers(4) + + ->whenCalled('countBy') + ->with(['model' => $preinscription, + 'role' => 'article', + 'scope' => ['validated' => false]]) + ->answers(1) + + ->whenCalled('countNotValidated') + ->answers(3) + + ->beStrict(); $this->dispatch('admin/modo/formulaires/', true); } @@ -275,13 +293,13 @@ class ModoControllerFormulaireListTest extends Admin_AbstractControllerTestCase /** @test */ public function liShouldContainsLinkToFormulaireForHackaton() { - $this->assertXPathContentContains('//li/a[contains(@href,"admin/modo/formulaires/id_article/4")]', 'Inscrivez vous au Hackaton [2]', $this->_response->getBody()); + $this->assertXPathContentContains('//li/a[contains(@href,"admin/modo/formulaires/id_article/4")]', 'Inscrivez vous au Hackaton [2/2]', $this->_response->getBody()); } /** @test */ public function liShouldContainsLinkToFormulaireForPreinscription() { - $this->assertXPathContentContains('//li/a[contains(@href,"admin/modo/formulaires/id_article/2")]', 'Formulaire de préinscription [4]'); + $this->assertXPathContentContains('//li/a[contains(@href,"admin/modo/formulaires/id_article/2")]', 'Formulaire de préinscription [1/4]'); } } @@ -292,13 +310,19 @@ class ModoControllerFormulaireIndexWithOptionActivatedTest extends Admin_Abstrac public function setUp() { parent::setUp(); Class_AdminVar::newInstanceWithId('CMS_FORMULAIRES')->setValeur(1); + + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Formulaire') + ->whenCalled('countBy') + ->with(['validated' => false]) + ->answers(2); + $this->dispatch('admin/modo/', true); } /** @test */ public function linkToModerateFormulairesShouldBePresent() { - $this->assertXPath('//a[contains(@href, "/admin/modo/formulaires")]'); + $this->assertXPathContentContains('//a[contains(@href, "/admin/modo/formulaires")]/following-sibling::span', '2'); } } -- GitLab