From 6d4a22ef6f8a1dcb52966e3d62fb9dfd9e576cb4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?ANDRE=20s=C3=A9bastien?= <sandre@afi-sa.fr>
Date: Mon, 24 Jul 2023 14:33:12 +0000
Subject: [PATCH] hotline : #182508 : Helper avis param limit_nb_words type int

---
 VERSIONS_HOTLINE/182508                       |  1 +
 library/ZendAfi/View/Helper/Avis.php          |  5 +-
 .../View/Helper/Accueil/CritiquesTest.php     | 78 +++++++++++++++----
 3 files changed, 66 insertions(+), 18 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/182508

diff --git a/VERSIONS_HOTLINE/182508 b/VERSIONS_HOTLINE/182508
new file mode 100644
index 00000000000..edc1697ba41
--- /dev/null
+++ b/VERSIONS_HOTLINE/182508
@@ -0,0 +1 @@
+ - correctif #182508 : Avis : Si la limite de nombre de mots n'est pas précisée dans les préférences de la boite critique, initialisé à 0. 
\ No newline at end of file
diff --git a/library/ZendAfi/View/Helper/Avis.php b/library/ZendAfi/View/Helper/Avis.php
index 44bf6aab83d..9f1d3d3afb0 100644
--- a/library/ZendAfi/View/Helper/Avis.php
+++ b/library/ZendAfi/View/Helper/Avis.php
@@ -20,8 +20,9 @@
  */
 
 class ZendAfi_View_Helper_Avis extends ZendAfi_View_Helper_BaseHelper {
+
+  protected int $_limit_nb_word = 0;
   protected $_vignette_link_to_avis = false;
-  protected $_limit_nb_word = 0;
   protected $_actions = [];
   protected $_admin_actions = [];
   protected $_url_context = [];
@@ -35,7 +36,7 @@ class ZendAfi_View_Helper_Avis extends ZendAfi_View_Helper_BaseHelper {
 
 
   public function setLimitNbWord($limit) {
-    $this->_limit_nb_word = $limit;
+    $this->_limit_nb_word = (int)$limit;
     return $this;
   }
 
diff --git a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
index 456505a3180..14d321392c4 100644
--- a/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
+++ b/tests/library/ZendAfi/View/Helper/Accueil/CritiquesTest.php
@@ -21,6 +21,7 @@
 
 
 class CritiquesAvisEmptyTest extends ViewHelperTestCase {
+
   public function setUp() {
     parent::setUp();
 
@@ -48,7 +49,9 @@ class CritiquesAvisEmptyTest extends ViewHelperTestCase {
 
 
 
+
 abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
+
   protected
     $_helper,
     $_prefs = []; // subclass responsibility
@@ -68,24 +71,25 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
     Class_AdminVar::set('AVIS_MIN_SAISIE', 0);
     Class_AdminVar::set('AVIS_MAX_SAISIE', 1000);
 
-    $lolo = $this->fixture('Class_Users', ['id' => 91,
-                                           'login' => 'lolo',
-                                           'password' => 'il l\'a ?',
-                                           'pseudo' => 'Lolo']);
+    $lolo = $this->fixture(Class_Users::class,
+                           ['id' => 91,
+                            'login' => 'lolo',
+                            'password' => 'il l\'a ?',
+                            'pseudo' => 'Lolo']);
 
-    $super_lolo = $this->fixture('Class_Users',
+    $super_lolo = $this->fixture(Class_Users::class,
                                  ['id' => 999,
                                   'login' => 'suplo',
                                   'password' => 'cutcomments',
                                   'role_level' => ZendAfi_Acl_AdminControllerRoles::MODO_PORTAIL]);
 
-    $millenium = $this->fixture('Class_Notice',
+    $millenium = $this->fixture(Class_Notice::class,
                                 ['id' => 9867,
                                  'titre_principal' => 'Millenium (Stieg Larsson)',
                                  'clef_alpha' => 'MILLENIUM',
                                  'url_vignette' => 'http://amazon.com/vignette.png']);
 
-    $avis_millenium = $this->fixture('Class_AvisNotice',
+    $avis_millenium = $this->fixture(Class_AvisNotice::class,
                                      ['id' => 23,
                                       'entete' => 'J\'adore',
                                       'avis' => 'Suspense intense tout au long de ce livre',
@@ -96,7 +100,7 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
                                       'statut' => 1,
                                       'notices' => [$millenium]]);
 
-    $avis_millenium_from_suplo = $this->fixture('Class_AvisNotice',
+    $avis_millenium_from_suplo = $this->fixture(Class_AvisNotice::class,
                                                 ['id' => 234,
                                                  'entete' => 'Excellent !',
                                                  'avis' => 'Tout au long de ce livre, le suspense est intense.',
@@ -107,7 +111,7 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
                                                  'source_author' => null,
                                                  'notices' => [$millenium]]);
 
-    $avis_millenium_from_suplo_with_html = $this->fixture('Class_AvisNotice',
+    $avis_millenium_from_suplo_with_html = $this->fixture(Class_AvisNotice::class,
                                                           ['id' => 2342,
                                                            'entete' => 'Excellent ce livre!',
                                                            'avis' => '<div class="should not be present"><br>Très bien ce livre<br>, le suspense est intense.</div>',
@@ -118,7 +122,7 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
                                                            'source_author' => null,
                                                            'notices' => [$millenium]]);
 
-    $avis_orphan = $this->fixture('Class_AvisNotice',
+    $avis_orphan = $this->fixture(Class_AvisNotice::class,
                                   ['id' => 34,
                                    'entete' => 'J\'ai oublié',
                                    'avis' => 'Ce que c\'était',
@@ -130,12 +134,12 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
                                    'statut' => 1,
                                    'notices' => []]);
 
-    $potter = $this->fixture('Class_Notice',
+    $potter = $this->fixture(Class_Notice::class,
                              ['id' => 687,
                               'titre_principal' => 'Potter',
                               'url_vignette' => 'NO']);
 
-    $avis_potter = $this->fixture('Class_AvisNotice',
+    $avis_potter = $this->fixture(Class_AvisNotice::class,
                                   ['id' => 87,
                                    'entete' => 'Le sorcier',
                                    'avis' => 'A du charme',
@@ -147,13 +151,16 @@ abstract class CritiquesAvisTestCase extends ViewHelperTestCase {
                                    'statut' => 1,
                                    'notices' => [$potter]]);
 
-    Class_Profil::setCurrentProfil($this->fixture('Class_Profil', ['id' => 18]));
+    Class_Profil::setCurrentProfil($this->fixture(Class_Profil::class,
+                                                  ['id' => 18]));
   }
 }
 
 
 
+
 class CritiquesWithVignettesTest extends CritiquesAvisTestCase {
+
   protected $_prefs = ['type_module' => 'CRITIQUES',
                        'division' => 1,
                        'preferences' =>  ['rss_avis' => true,
@@ -183,6 +190,7 @@ class CritiquesWithVignettesTest extends CritiquesAvisTestCase {
     $this->assertTrue(count(array_unique($htmls)) > 1);
   }
 
+
   /** @test */
   public function superLoloCommentWithHtmlShouldBeCutAfterTresBien() {
         $this->assertXPathContentContains($this->html, '//p', '
@@ -250,7 +258,9 @@ Très bien [...]');
 
 
 
+
 class CritiquesWithEmptyVignettesAllowedTest extends CritiquesAvisTestCase {
+
   protected $_prefs = ['type_module' => 'CRITIQUES',
                        'division' => 1,
                        'preferences' =>  ['rss_avis' => false,
@@ -296,7 +306,9 @@ class CritiquesWithEmptyVignettesAllowedTest extends CritiquesAvisTestCase {
 
 
 
+
 class CritiquesHierarchicalByDomainViewTest extends CritiquesAvisTestCase {
+
   protected $_prefs = ['type_module' => 'CRITIQUES',
                        'division' => 1,
                        'preferences' => ['rss_avis' => false,
@@ -323,13 +335,13 @@ class CritiquesHierarchicalByDomainViewTest extends CritiquesAvisTestCase {
 
     Zend_Registry::set('sql', $sql);
 
-    $this->fixture('Class_Catalogue',
+    $this->fixture(Class_Catalogue::class,
                    ['id' => 180,
                     'libelle' => 'THEME',
-                    'sous_domaines' => [$this->fixture('Class_Catalogue',
+                    'sous_domaines' => [$this->fixture(Class_Catalogue::class,
                                                        ['id' => 1234,
                                                         'libelle' => 'Art']),
-                                        $this->fixture('Class_Catalogue',
+                                        $this->fixture(Class_Catalogue::class,
                                                        ['id' => 1235,
                                                         'libelle' => 'Litterature'])]]);
   }
@@ -350,3 +362,37 @@ class CritiquesHierarchicalByDomainViewTest extends CritiquesAvisTestCase {
                                       'Litterature');
   }
 }
+
+
+
+
+class CritiquesWithEmptyNbWordsTest extends CritiquesAvisTestCase {
+
+  protected $_prefs = ['type_module' => 'CRITIQUES',
+                       'division' => 1,
+                       'preferences' => ['rss_avis' => false,
+                                         'only_img' => 0,
+                                         'display_order' => 'Random',
+                                         'titre' => '',
+                                         'nb_aff_avis' => '3',
+                                         'nb_words' => '',
+                                         'boite' => null,
+                                         'hierarchical' => '0',
+                                         'id_catalogue' => '180']];
+
+  protected function _prepareFixtures() {
+    parent::_prepareFixtures();
+
+    $this->onLoaderOfModel(Class_AvisNotice::class)
+         ->whenCalled('getAvisFromPreferences')
+         ->answers([Class_AvisNotice::find(23)]);
+  }
+
+
+  /** @test */
+  public function avisShouldBePresent() {
+    $this->assertXPathContentContains($this->html,
+                                      '//div[@class="contenu_critique"]/p',
+                                      'Suspense intense tout au long de ce livre');
+  }
+}
-- 
GitLab