*/
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)
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();
}
if (!empty($config[$cat])) {
foreach ($config[$cat] as $key => $value) {
- $this->in_db[$cat][$key] = true;
+ $this->db_loaded[$cat][$key] = true;
}
}
{
// 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);
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
$stored = $this->configModel->set($cat, $key, $value);
- $this->in_db[$cat][$key] = $stored;
+ $this->db_loaded[$cat][$key] = $stored;
return $cached && $stored;
}
{
$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()) {
->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)
->andReturn(['config' => []])
->once();
+ // mocking one get without result
+ $this->configModel->shouldReceive('get')
+ ->with('test', 'it')
+ ->andReturn(null)
+ ->once();
+
parent::testDeleteWithDB();
}
}