]> git.mxchange.org Git - friendica.git/commitdiff
Fixing initial load config
authorPhilipp Holzer <admin+github@philipp.info>
Mon, 15 Jul 2019 06:58:37 +0000 (08:58 +0200)
committerPhilipp Holzer <admin+github@philipp.info>
Mon, 15 Jul 2019 06:58:37 +0000 (08:58 +0200)
src/Core/Config/JitConfiguration.php
tests/src/Core/Config/JitConfigurationTest.php

index 40aa5d6f6c9418c522b3ef51d42510b9a7628902..07f6d0e079cce65eb488586fc36cccc459365eac 100644 (file)
@@ -13,8 +13,10 @@ use Friendica\Model;
  */
 class JitConfiguration extends Configuration
 {
-       /** @var array */
-       private $in_db;
+       /**
+        * @var array Array of already loaded db values (even if there was no value)
+        */
+       private $db_loaded;
 
        /**
         * @param Cache\ConfigCache   $configCache The configuration cache (based on the config-files)
@@ -23,17 +25,7 @@ class JitConfiguration extends Configuration
        public function __construct(Cache\ConfigCache $configCache, Model\Config\Config $configModel)
        {
                parent::__construct($configCache, $configModel);
-               $this->in_db = [];
-
-               // take the values of the given cache instead of loading them from the model again
-               $preSet = $configCache->getAll();
-               if (!empty($preSet)) {
-                       foreach ($preSet as $cat => $data) {
-                               foreach ($data as $key => $value) {
-                                       $this->in_db[$cat][$key] = true;
-                               }
-                       }
-               }
+               $this->db_loaded = [];
 
                $this->load();
        }
@@ -53,7 +45,7 @@ class JitConfiguration extends Configuration
 
                if (!empty($config[$cat])) {
                        foreach ($config[$cat] as $key => $value) {
-                               $this->in_db[$cat][$key] = true;
+                               $this->db_loaded[$cat][$key] = true;
                        }
                }
 
@@ -68,7 +60,7 @@ class JitConfiguration extends Configuration
        {
                // if the value isn't loaded or refresh is needed, load it to the cache
                if ($this->configModel->isConnected() &&
-                   (empty($this->in_db[$cat][$key]) ||
+                   (empty($this->db_loaded[$cat][$key]) ||
                     $refresh)) {
 
                        $dbvalue = $this->configModel->get($cat, $key);
@@ -76,8 +68,9 @@ class JitConfiguration extends Configuration
                        if (isset($dbvalue)) {
                                $this->configCache->set($cat, $key, $dbvalue);
                                unset($dbvalue);
-                               $this->in_db[$cat][$key] = true;
                        }
+
+                       $this->db_loaded[$cat][$key] = true;
                }
 
                // use the config cache for return
@@ -101,7 +94,7 @@ class JitConfiguration extends Configuration
 
                $stored = $this->configModel->set($cat, $key, $value);
 
-               $this->in_db[$cat][$key] = $stored;
+               $this->db_loaded[$cat][$key] = $stored;
 
                return $cached && $stored;
        }
@@ -113,8 +106,8 @@ class JitConfiguration extends Configuration
        {
                $cacheRemoved = $this->configCache->delete($cat, $key);
 
-               if (isset($this->in_db[$cat][$key])) {
-                       unset($this->in_db[$cat][$key]);
+               if (isset($this->db_loaded[$cat][$key])) {
+                       unset($this->db_loaded[$cat][$key]);
                }
 
                if (!$this->configModel->isConnected()) {
index 79aada48d61a3a245c2343477310b3da3f072faa..1a9723a94eefd364ef879b4434ec671597319817 100644 (file)
@@ -114,7 +114,13 @@ class JitConfigurationTest extends ConfigurationTest
                                  ->andReturn(['config' => []])
                                  ->once();
 
-               // mocking one get
+               // mocking one get without result
+               $this->configModel->shouldReceive('get')
+                                 ->with('test', 'it')
+                                 ->andReturn(null)
+                                 ->once();
+
+               // mocking the data get
                $this->configModel->shouldReceive('get')
                                  ->with('test', 'it')
                                  ->andReturn($data)
@@ -162,6 +168,12 @@ class JitConfigurationTest extends ConfigurationTest
                                  ->andReturn(['config' => []])
                                  ->once();
 
+               // mocking one get without result
+               $this->configModel->shouldReceive('get')
+                                 ->with('test', 'it')
+                                 ->andReturn(null)
+                                 ->once();
+
                parent::testDeleteWithDB();
        }
 }