From 8d6b70c3f3fcfb2621bbefc44528588c0e4230f0 Mon Sep 17 00:00:00 2001
From: Patrick Barroca <pbarroca@afi-sa.fr>
Date: Mon, 10 Feb 2020 09:23:38 +0100
Subject: [PATCH] tests performances

---
 library/Class/AdminVar.php                    | 23 +++++++++----------
 library/Class/Journal/Type.php                | 23 +++++++++++++++++++
 .../modules/AbstractControllerTestCase.php    |  1 +
 tests/library/Class/ModelTestCase.php         |  1 +
 tests/scenarios/Journal/JournalTest.php       | 19 ++++++++++-----
 5 files changed, 49 insertions(+), 18 deletions(-)

diff --git a/library/Class/AdminVar.php b/library/Class/AdminVar.php
index 2ebf0a7a905..2078dc7dabc 100644
--- a/library/Class/AdminVar.php
+++ b/library/Class/AdminVar.php
@@ -23,10 +23,8 @@
 class Class_AdminVarLoader extends Storm_Model_Loader {
   use Trait_Translator;
 
-  /** @var array */
-  protected
-    $all_vars,
-    $_all_vars_values;
+  protected static $_all_vars_values, $_all_vars;
+
 
   protected $_inited = false;
 
@@ -115,10 +113,10 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
 
 
   public function knownVars() {
-    if (null !== $this->all_vars)
-      return $this->all_vars;
+    if (null !== static::$_all_vars)
+      return static::$_all_vars;
 
-    return $this->all_vars =
+    return static::$_all_vars =
       [
        'avis' => $this->_getCommentVars(),
        'modo' => $this->_getModerationVars(),
@@ -537,15 +535,15 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
 
 
   public function allVarsValues() {
-    if (null !== $this->_all_vars_values)
-      return $this->_all_vars_values;
+    if (null !== static::$_all_vars_values)
+      return static::$_all_vars_values;
 
     $values=[];
     foreach ($this->knownVars() as $key => $value) {
       $values = array_merge($values, $value);
     }
 
-    return $this->_all_vars_values = $values;
+    return static::$_all_vars_values = $values;
   }
 
 
@@ -584,8 +582,9 @@ class Class_AdminVarLoader extends Storm_Model_Loader {
 
   /** @category testing */
   public function resetAllVars() {
-    $this->all_vars = null;
-    $this->_all_vars_values = null;
+    static::$_all_vars = null;
+    static::$_all_vars_values = null;
+    return $this;
   }
 
 
diff --git a/library/Class/Journal/Type.php b/library/Class/Journal/Type.php
index 3507dbf5678..deda6beb837 100644
--- a/library/Class/Journal/Type.php
+++ b/library/Class/Journal/Type.php
@@ -30,10 +30,33 @@ class Class_Journal_Type {
     PREVIOUS_VALUE = 'previous_value',
     NEW_VALUE = 'new_value';
 
+  protected static $_enabled = true;
+
   protected $_journal;
 
 
+  /** @category testing */
+  public static function disable() {
+    static::$_enabled = false;
+  }
+
+
+  /** @category testing */
+  public static function enable() {
+    static::$_enabled = true;
+  }
+
+
+  /** @category testing */
+  protected static function _isEnabled() {
+    return static::$_enabled;
+  }
+
+
   public static function save($model) {
+    if (!static::_isEnabled())
+      return;
+
     $journal = Class_Journal::newInstance(['type' => static::MY_TYPE]);
     if (!$journal->save())
       return;
diff --git a/tests/application/modules/AbstractControllerTestCase.php b/tests/application/modules/AbstractControllerTestCase.php
index a030c14e620..de0ea17907a 100644
--- a/tests/application/modules/AbstractControllerTestCase.php
+++ b/tests/application/modules/AbstractControllerTestCase.php
@@ -126,6 +126,7 @@ abstract class AbstractControllerTestCase extends Zend_Test_PHPUnit_ControllerTe
     $session = new Zend_Session_Namespace('FlashMessenger');
     $session->unsetAll();
 
+    Class_Journal_Type::disable(); // perf: do not track adminvars by default
     Class_AdminVar::beVolatile();
     Class_TextReplacements::reset();
     Class_AdminVar::set('CACHE_ACTIF', 0);
diff --git a/tests/library/Class/ModelTestCase.php b/tests/library/Class/ModelTestCase.php
index a356656577e..079019763dd 100644
--- a/tests/library/Class/ModelTestCase.php
+++ b/tests/library/Class/ModelTestCase.php
@@ -69,6 +69,7 @@ abstract class ModelTestCase extends Storm_Test_ModelTestCase {
     Class_Url::setBaseUrl('/bokeh');
     Class_Url::setPhpMode('apache');
 
+    Class_Journal_Type::disable(); // perf: do not track adminvars by default
     Class_AdminVar::beVolatile();
     Class_AdminVar::set('CACHE_ACTIF', 0);
     Class_AdminVar::set('BIBNUM', 1);
diff --git a/tests/scenarios/Journal/JournalTest.php b/tests/scenarios/Journal/JournalTest.php
index a694d833078..ef2191b5576 100644
--- a/tests/scenarios/Journal/JournalTest.php
+++ b/tests/scenarios/Journal/JournalTest.php
@@ -20,10 +20,20 @@
  */
 
 
-class JournalAdminVarPostTest extends Admin_AbstractControllerTestCase {
+abstract class JournalAdminVarTestCase extends Admin_AbstractControllerTestCase {
   protected $_storm_default_to_volatile = true;
 
 
+  public function setUp() {
+    parent::setUp();
+    Class_Journal_Type::enable();
+  }
+}
+
+
+
+
+class JournalAdminVarPostTest extends JournalAdminVarTestCase {
   public function setUp() {
     parent::setUp();
     Class_AdminVar::set('FACETTE_GENRE_LIBELLE', '');
@@ -74,10 +84,7 @@ class JournalAdminVarPostTest extends Admin_AbstractControllerTestCase {
 
 
 
-class JournalIndexActionTest extends Admin_AbstractControllerTestCase {
-  protected $_storm_default_to_volatile = true;
-
-
+class JournalIndexActionTest extends JournalAdminVarTestCase {
   public function setUp() {
     parent::setUp();
 
@@ -93,4 +100,4 @@ class JournalIndexActionTest extends Admin_AbstractControllerTestCase {
                                       'La variable "FACETTE_GENRE_LIBELLE" a été modifiée de "" à "test" par "Harlock"',
                                       $this->_response->getBody());
   }
-}
\ No newline at end of file
+}
-- 
GitLab