. * */ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache; use Friendica\Core\Config\Factory\Config; use Friendica\Database\Definition\DbaDefinition; use Friendica\Database\Definition\ViewDefinition; use Friendica\Test\DatabaseTestTrait; use Friendica\Test\Util\Database\StaticDatabase; use Friendica\Test\Util\VFSTrait; use Friendica\Util\Profiler; use Mockery; use Psr\Log\NullLogger; class DatabaseCacheTest extends CacheTest { use DatabaseTestTrait; use VFSTrait; protected function setUp(): void { $this->setUpVfsDir(); $this->setUpDb(); parent::setUp(); } protected function getInstance() { $profiler = Mockery::mock(Profiler::class); $profiler->shouldReceive('startRecording'); $profiler->shouldReceive('stopRecording'); $profiler->shouldReceive('saveTimestamp')->withAnyArgs()->andReturn(true); // load real config to avoid mocking every config-entry which is related to the Database class $configFactory = new Config(); $configFileManager = (new Config())->createConfigFileManager($this->root->url(), []); $configCache = $configFactory->createCache($configFileManager); $config = new \Friendica\Core\Config\Model\ReadOnlyFileConfig($configCache); $dbaDefinition = (new DbaDefinition($configCache->get('system', 'basepath')))->load(); $viewDefinition = (new ViewDefinition($configCache->get('system', 'basepath')))->load(); $dba = new StaticDatabase($config, $dbaDefinition, $viewDefinition); $this->cache = new Cache\Type\DatabaseCache('database', $dba); return $this->cache; } protected function tearDown(): void { $this->cache->clear(false); $this->tearDownDb(); parent::tearDown(); } }