diff --git a/src/Core/Config/JitConfiguration.php b/src/Core/Config/JitConfiguration.php index 40aa5d6f6c..07f6d0e079 100644 --- a/src/Core/Config/JitConfiguration.php +++ b/src/Core/Config/JitConfiguration.php @@ -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()) { diff --git a/tests/Util/AppMockTrait.php b/tests/Util/AppMockTrait.php index 52941d0d51..caf8a7c084 100644 --- a/tests/Util/AppMockTrait.php +++ b/tests/Util/AppMockTrait.php @@ -44,7 +44,6 @@ trait AppMockTrait public function mockApp(vfsStreamDirectory $root, $raw = false) { $this->configMock = \Mockery::mock(Config\Cache\ConfigCache::class); - $this->configMock->shouldReceive('getAll')->andReturn([])->once(); $this->mode = \Mockery::mock(App\Mode::class); $configModel= \Mockery::mock(\Friendica\Model\Config\Config::class); // Disable the adapter diff --git a/tests/src/Core/Config/JitConfigurationTest.php b/tests/src/Core/Config/JitConfigurationTest.php index 79aada48d6..1a9723a94e 100644 --- a/tests/src/Core/Config/JitConfigurationTest.php +++ b/tests/src/Core/Config/JitConfigurationTest.php @@ -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(); } }