From c3a00d1cf3a49ef145ef607cf2abb542ff28ee3f Mon Sep 17 00:00:00 2001
From: llaffont <llaffont@afi-sa.fr>
Date: Mon, 31 Aug 2015 16:38:36 +0200
Subject: [PATCH] hotline #28245 Fix random displaying of critics: add tests

---
 .../opac/controllers/BlogController.php       |  3 ---
 .../ZendAfi/View/Helper/Accueil/Critiques.php |  4 ++++
 .../View/Helper/Accueil/CritiquesTest.php     | 22 ++++++++++++++-----
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/application/modules/opac/controllers/BlogController.php b/application/modules/opac/controllers/BlogController.php
index eb3ef969305..27a13c20daf 100644
--- a/application/modules/opac/controllers/BlogController.php
+++ b/application/modules/opac/controllers/BlogController.php
@@ -100,9 +100,6 @@ class BlogController extends ZendAfi_Controller_Action {
 
     $avis = Class_AvisNotice::getAvisFromPreferences($preferences,[$this->view->page, $this->view->config['nb_display']]);
 
-    if (isset($preferences['display_order']) && $preferences['display_order'] == 'Random')
-      shuffle($avis);
-
     $this->view->liste_avis = $avis;
 
     $params_url=$this->_request->getParams();
diff --git a/library/ZendAfi/View/Helper/Accueil/Critiques.php b/library/ZendAfi/View/Helper/Accueil/Critiques.php
index 4cf889d5026..1c0e147fea2 100644
--- a/library/ZendAfi/View/Helper/Accueil/Critiques.php
+++ b/library/ZendAfi/View/Helper/Accueil/Critiques.php
@@ -22,6 +22,8 @@
 
 class ZendAfi_View_Helper_Accueil_Critiques extends ZendAfi_View_Helper_Accueil_Base {
   public function getHtml() {
+    $this->contenu = '';
+
     if ($this->isHierarchicalDisplay()) {
       $this->titre = $this->getPreference('titre');
       $this->contenu = $this->view->domainTree($this->getPreference('id_catalogue'),
@@ -36,6 +38,7 @@ class ZendAfi_View_Helper_Accueil_Critiques extends ZendAfi_View_Helper_Accueil_
 
     $fetched_avis = Class_AvisNotice::getAvisFromPreferences($this->getPreferences());
 
+
     if ($this->getPreference('display_order') == 'Random')
       shuffle($fetched_avis);
 
@@ -53,6 +56,7 @@ class ZendAfi_View_Helper_Accueil_Critiques extends ZendAfi_View_Helper_Accueil_
         $selected_avis[] = $avis;
     }
 
+
     if (count($selected_avis) == 0) {
       $this->contenu = $this
         ->decorateContenu($this->_tag('p', $this->_('Aucune critique récente')));
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
index 9d23a82a514..bf7f3fc7839 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
@@ -51,17 +51,19 @@ class CritiquesAvisEmptyTest extends ViewHelperTestCase {
 
 
 abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
-  protected $_storm_default_to_volatile = true;
-  protected $_prefs = []; // subclass responsibility
+  protected
+    $_storm_default_to_volatile = true,
+    $_helper,
+    $_prefs = []; // subclass responsibility
 
   public function setUp() {
     parent::setUp();
 
     $this->_prepareFixtures();
 
-    $helper = new ZendAfi_View_Helper_Accueil_Critiques(2, $this->_prefs);
-    $helper->setView(new ZendAfi_Controller_Action_Helper_View());
-    $this->html = $helper->getBoite();
+    $this->_helper = new ZendAfi_View_Helper_Accueil_Critiques(2, $this->_prefs);
+    $this->_helper->setView(new ZendAfi_Controller_Action_Helper_View());
+    $this->html = $this->_helper->getBoite();
   }
 
 
@@ -169,6 +171,16 @@ class CritiquesWithVignettesTest extends CritiquesAvisTestCase {
   }
 
 
+  /** @test */
+  public function criticsOrderShouldBeRandom() {
+    Storm_Cache::setDefaultZendCache(null);
+    $htmls = [];
+    foreach(range(0, 9) as $i)
+      $htmls [] = $this->_helper->getBoite();
+
+    $this->assertTrue(count(array_unique($htmls)) > 1);
+  }
+
   /** @test */
   public function superLoloCommentWithHtmlShouldBeCutAfterTresBien() {
         $this->assertXPathContentContains($this->html, '//p', '
-- 
GitLab