From cb791024e4dee6404567b025348fc08d852a9a0d Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Thu, 7 Feb 2019 20:44:03 +0100 Subject: [PATCH] Refactor ConfigMockTrait to mocked ConfigCache --- src/Core/Config.php | 13 ++-- src/Core/Config/AbstractDbaConfigAdapter.php | 13 ++++ src/Core/Config/ConfigCache.php | 2 + src/Core/Config/IConfigAdapter.php | 7 ++ src/Core/Config/IConfigCache.php | 2 + src/Core/Config/JITConfigAdapter.php | 18 +++++- src/Core/Config/PreloadConfigAdapter.php | 18 +++++- tests/Util/AppMockTrait.php | 28 ++++++-- tests/Util/ConfigMockTrait.php | 64 ------------------- tests/Util/RendererMockTrait.php | 7 -- tests/src/App/ModeTest.php | 55 +++++++++++++--- tests/src/BaseObjectTest.php | 38 +++-------- tests/src/Core/Cache/ArrayCacheDriverTest.php | 5 -- tests/src/Core/Cache/CacheTest.php | 11 ---- .../Core/Cache/DatabaseCacheDriverTest.php | 2 + .../Core/Cache/MemcacheCacheDriverTest.php | 13 ++-- .../Core/Cache/MemcachedCacheDriverTest.php | 7 +- tests/src/Core/Cache/RedisCacheDriverTest.php | 13 ++-- .../AutomaticInstallationConsoleTest.php | 5 +- tests/src/Core/Console/ConfigConsoleTest.php | 49 ++++++++++++-- .../Core/Lock/ArrayCacheLockDriverTest.php | 4 -- tests/src/Core/Lock/LockTest.php | 13 +--- .../Core/Lock/MemcacheCacheLockDriverTest.php | 13 ++-- .../Lock/MemcachedCacheLockDriverTest.php | 7 +- .../Core/Lock/RedisCacheLockDriverTest.php | 13 ++-- .../src/Core/Lock/SemaphoreLockDriverTest.php | 10 +-- tests/src/Database/DBStructureTest.php | 7 -- 27 files changed, 244 insertions(+), 193 deletions(-) create mode 100644 src/Core/Config/AbstractDbaConfigAdapter.php delete mode 100644 tests/Util/ConfigMockTrait.php diff --git a/src/Core/Config.php b/src/Core/Config.php index 6ceb637701..559ee83ece 100644 --- a/src/Core/Config.php +++ b/src/Core/Config.php @@ -22,7 +22,7 @@ use Friendica\Core\Config\IConfigCache; class Config { /** - * @var Config\IConfigAdapter + * @var Config\IConfigAdapter|null */ private static $adapter; @@ -62,7 +62,7 @@ class Config */ public static function load($family = "config") { - if (!isset(self::$adapter)) { + if (!isset(self::$adapter) || !self::$adapter->isConnected()) { return; } @@ -86,7 +86,7 @@ class Config */ public static function get($family, $key, $default_value = null, $refresh = false) { - if (!isset(self::$adapter)) { + if (!isset(self::$adapter) || !self::$adapter->isConnected()) { return self::$cache->get($family, $key, $default_value); } @@ -108,9 +108,8 @@ class Config */ public static function set($family, $key, $value) { - if (!isset(self::$adapter)) { - self::$cache->set($family, $key, $value); - return true; + if (!isset(self::$adapter) || !self::$adapter->isConnected()) { + return self::$cache->set($family, $key, $value); } return self::$adapter->set($family, $key, $value); @@ -129,7 +128,7 @@ class Config */ public static function delete($family, $key) { - if (!isset(self::$adapter)) { + if (!isset(self::$adapter) || !self::$adapter->isConnected()) { self::$cache->delete($family, $key); } diff --git a/src/Core/Config/AbstractDbaConfigAdapter.php b/src/Core/Config/AbstractDbaConfigAdapter.php new file mode 100644 index 0000000000..f7fd701b00 --- /dev/null +++ b/src/Core/Config/AbstractDbaConfigAdapter.php @@ -0,0 +1,13 @@ +config[$cat][$key] = $value; } + + return true; } /** diff --git a/src/Core/Config/IConfigAdapter.php b/src/Core/Config/IConfigAdapter.php index 139483de26..70e141484e 100644 --- a/src/Core/Config/IConfigAdapter.php +++ b/src/Core/Config/IConfigAdapter.php @@ -54,4 +54,11 @@ interface IConfigAdapter * @return mixed */ public function delete($cat, $k); + + /** + * Checks, if the current adapter is connected to the backend + * + * @return bool + */ + public function isConnected(); } diff --git a/src/Core/Config/IConfigCache.php b/src/Core/Config/IConfigCache.php index 8266cc2dd4..898e3c0f86 100644 --- a/src/Core/Config/IConfigCache.php +++ b/src/Core/Config/IConfigCache.php @@ -22,6 +22,8 @@ interface IConfigCache * @param string $cat Config category * @param string $key Config key * @param mixed $value Value to set + * + * @return bool True, if the value is set */ function set($cat, $key, $value); diff --git a/src/Core/Config/JITConfigAdapter.php b/src/Core/Config/JITConfigAdapter.php index e7aecb933b..76476be3aa 100644 --- a/src/Core/Config/JITConfigAdapter.php +++ b/src/Core/Config/JITConfigAdapter.php @@ -10,7 +10,7 @@ use Friendica\Database\DBA; * * @author Hypolite Petovan */ -class JITConfigAdapter implements IConfigAdapter +class JITConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapter { private $cache; private $in_db; @@ -33,6 +33,10 @@ class JITConfigAdapter implements IConfigAdapter */ public function load($cat = "config") { + if (!$this->isConnected()) { + return; + } + // We don't preload "system" anymore. // This reduces the number of database reads a lot. if ($cat === 'system') { @@ -58,6 +62,10 @@ class JITConfigAdapter implements IConfigAdapter */ public function get($cat, $k, $default_value = null, $refresh = false) { + if (!$this->isConnected()) { + return $default_value; + } + if (!$refresh) { // Do we have the cached value? Then return it if (isset($this->cache[$cat][$k])) { @@ -103,6 +111,10 @@ class JITConfigAdapter implements IConfigAdapter */ public function set($cat, $k, $value) { + if (!$this->isConnected()) { + return false; + } + // We store our setting values in a string variable. // So we have to do the conversion here so that the compare below works. // The exception are array values. @@ -143,6 +155,10 @@ class JITConfigAdapter implements IConfigAdapter */ public function delete($cat, $k) { + if (!$this->isConnected()) { + return false; + } + if (isset($this->cache[$cat][$k])) { unset($this->cache[$cat][$k]); unset($this->in_db[$cat][$k]); diff --git a/src/Core/Config/PreloadConfigAdapter.php b/src/Core/Config/PreloadConfigAdapter.php index d5fbd982bf..2fe3d4cdad 100644 --- a/src/Core/Config/PreloadConfigAdapter.php +++ b/src/Core/Config/PreloadConfigAdapter.php @@ -12,7 +12,7 @@ use Friendica\Database\DBA; * * @author Hypolite Petovan */ -class PreloadConfigAdapter implements IConfigAdapter +class PreloadConfigAdapter extends AbstractDbaConfigAdapter implements IConfigAdapter { private $config_loaded = false; @@ -35,6 +35,10 @@ class PreloadConfigAdapter implements IConfigAdapter */ public function load($family = 'config') { + if (!$this->isConnected()) { + return; + } + if ($this->config_loaded) { return; } @@ -53,6 +57,10 @@ class PreloadConfigAdapter implements IConfigAdapter */ public function get($cat, $k, $default_value = null, $refresh = false) { + if (!$this->isConnected()) { + return $default_value; + } + if ($refresh) { $config = DBA::selectFirst('config', ['v'], ['cat' => $cat, 'k' => $k]); if (DBA::isResult($config)) { @@ -70,6 +78,10 @@ class PreloadConfigAdapter implements IConfigAdapter */ public function set($cat, $k, $value) { + if (!$this->isConnected()) { + return false; + } + // We store our setting values as strings. // So we have to do the conversion here so that the compare below works. // The exception are array values. @@ -97,6 +109,10 @@ class PreloadConfigAdapter implements IConfigAdapter */ public function delete($cat, $k) { + if (!$this->isConnected()) { + return false; + } + $this->configCache->delete($cat, $k); $result = DBA::delete('config', ['cat' => $cat, 'k' => $k]); diff --git a/tests/Util/AppMockTrait.php b/tests/Util/AppMockTrait.php index 290191cba1..18188239f1 100644 --- a/tests/Util/AppMockTrait.php +++ b/tests/Util/AppMockTrait.php @@ -4,6 +4,7 @@ namespace Friendica\Test\Util; use Friendica\App; use Friendica\BaseObject; +use Friendica\Core\Config; use Friendica\Core\Config\ConfigCache; use Friendica\Render\FriendicaSmartyEngine; use Mockery\MockInterface; @@ -14,13 +15,16 @@ use org\bovigo\vfs\vfsStreamDirectory; */ trait AppMockTrait { - use ConfigMockTrait; - /** * @var MockInterface|App The mocked Friendica\App */ protected $app; + /** + * @var MockInterface|ConfigCache The mocked Config Cache + */ + protected $configCache; + /** * Mock the App * @@ -29,8 +33,7 @@ trait AppMockTrait */ public function mockApp($root, $config) { - $this->mockConfigGet('system', 'theme', 'testtheme'); - + $this->configCache = $config; // Mocking App and most used functions $this->app = \Mockery::mock(App::class); $this->app @@ -53,6 +56,15 @@ trait AppMockTrait ->shouldReceive('get') ->with('database', 'database') ->andReturn(getenv('MYSQL_DATABASE')); + $config + ->shouldReceive('get') + ->with('config', 'hostname') + ->andReturn('localhost'); + $config + ->shouldReceive('get') + ->with('system', 'theme', NULL) + ->andReturn('system_theme'); + $this->app ->shouldReceive('getConfig') ->andReturn($config); @@ -70,6 +82,14 @@ trait AppMockTrait ->shouldReceive('getBaseUrl') ->andReturn('http://friendica.local'); + // Initialize empty Config + Config::init($config); + $configAdapter = \Mockery::mock('Friendica\Core\Config\IConfigAdapter'); + $configAdapter + ->shouldReceive('isConnected') + ->andReturn(false); + Config::setAdapter($configAdapter); + BaseObject::setApp($this->app); } } diff --git a/tests/Util/ConfigMockTrait.php b/tests/Util/ConfigMockTrait.php deleted file mode 100644 index d2867a589e..0000000000 --- a/tests/Util/ConfigMockTrait.php +++ /dev/null @@ -1,64 +0,0 @@ -configMock)) { - $this->configMock = \Mockery::mock('alias:Friendica\Core\Config'); - } - - $this->configMock - ->shouldReceive('get') - ->times($times) - ->with($family, $key) - ->andReturn($value); - } - - /** - * Mocking setting a new config entry - * - * @param string $family The family of the config double - * @param string $key The key of the config double - * @param mixed $value The value of the config double - * @param null|int $times How often the Config will get used - * @param bool $return Return value of the set (default is true) - */ - public function mockConfigSet($family, $key, $value, $times = null, $return = true) - { - if (!isset($this->configMock)) { - $this->configMock = \Mockery::mock('alias:Friendica\Core\Config'); - } - - $this->mockConfigGet($family, $key, false, 1); - if ($return) { - $this->mockConfigGet($family, $key, $value, 1); - } - - $this->configMock - ->shouldReceive('set') - ->times($times) - ->with($family, $key, $value) - ->andReturn($return); - } -} diff --git a/tests/Util/RendererMockTrait.php b/tests/Util/RendererMockTrait.php index b12327f49c..bea0fe16fc 100644 --- a/tests/Util/RendererMockTrait.php +++ b/tests/Util/RendererMockTrait.php @@ -1,14 +1,7 @@ setUpVfsDir(); } @@ -50,6 +45,10 @@ class ModeTest extends MockedTest $this->assertFalse($mode->has(Mode::LOCALCONFIGPRESENT)); } + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ public function testWithoutDatabase() { $this->mockConnected(false, 1); @@ -64,6 +63,10 @@ class ModeTest extends MockedTest $this->assertFalse($mode->has(Mode::DBAVAILABLE)); } + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ public function testWithoutDatabaseSetup() { $this->mockConnected(true, 1); @@ -78,11 +81,28 @@ class ModeTest extends MockedTest $this->assertTrue($mode->has(Mode::LOCALCONFIGPRESENT)); } + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ public function testWithMaintenanceMode() { $this->mockConnected(true, 1); $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1); - $this->mockConfigGet('system', 'maintenance', true, 1); + + $config = \Mockery::mock('Friendica\Core\Config\ConfigCache'); + $config + ->shouldReceive('get') + ->with('system', 'maintenance', null) + ->andReturn(true) + ->once(); + // Initialize empty Config + Config::init($config); + $configAdapter = \Mockery::mock('Friendica\Core\Config\IConfigAdapter'); + $configAdapter + ->shouldReceive('isConnected') + ->andReturn(false); + Config::setAdapter($configAdapter); $mode = new Mode($this->root->url()); $mode->determine(); @@ -94,11 +114,28 @@ class ModeTest extends MockedTest $this->assertFalse($mode->has(Mode::MAINTENANCEDISABLED)); } + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ public function testNormalMode() { $this->mockConnected(true, 1); $this->mockFetchFirst('SHOW TABLES LIKE \'config\'', true, 1); - $this->mockConfigGet('system', 'maintenance', false, 1); + + $config = \Mockery::mock('Friendica\Core\Config\ConfigCache'); + $config + ->shouldReceive('get') + ->with('system', 'maintenance', null) + ->andReturn(false) + ->once(); + // Initialize empty Config + Config::init($config); + $configAdapter = \Mockery::mock('Friendica\Core\Config\IConfigAdapter'); + $configAdapter + ->shouldReceive('isConnected') + ->andReturn(false); + Config::setAdapter($configAdapter); $mode = new Mode($this->root->url()); $mode->determine(); diff --git a/tests/src/BaseObjectTest.php b/tests/src/BaseObjectTest.php index b2c73780a4..784944c3a0 100644 --- a/tests/src/BaseObjectTest.php +++ b/tests/src/BaseObjectTest.php @@ -5,7 +5,6 @@ namespace Friendica\Test; -use Friendica\App; use Friendica\BaseObject; use Friendica\Test\Util\AppMockTrait; use Friendica\Test\Util\VFSTrait; @@ -13,8 +12,6 @@ use PHPUnit\Framework\TestCase; /** * Tests for the BaseObject class. - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled */ class BaseObjectTest extends TestCase { @@ -27,46 +24,29 @@ class BaseObjectTest extends TestCase private $baseObject; /** - * Create variables used in tests. - */ - protected function setUp() - { - $this->baseObject = new BaseObject(); - } - - /** - * Test the getApp() function. + * Test the setApp() and getApp() function. * @return void */ - public function testGetApp() + public function testGetSetApp() { + $baseObject = new BaseObject(); $this->setUpVfsDir(); $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache'); $this->mockApp($this->root, $configMock); - $this->assertInstanceOf(App::class, $this->baseObject->getApp()); - } - - /** - * Test the setApp() function. - * @return void - */ - public function testSetApp() - { - $this->setUpVfsDir(); - $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache'); - $this->mockApp($this->root, $configMock); - - $this->assertNull($this->baseObject->setApp($this->app)); - $this->assertEquals($this->app, $this->baseObject->getApp()); + $this->assertNull($baseObject->setApp($this->app)); + $this->assertEquals($this->app, $baseObject->getApp()); } /** * Test the getApp() function without App * @expectedException Friendica\Network\HTTPException\InternalServerErrorException + * @runInSeparateProcess + * @preserveGlobalState disabled */ public function testGetAppFailed() { - BaseObject::getApp(); + $baseObject = new BaseObject(); + $baseObject->getApp(); } } diff --git a/tests/src/Core/Cache/ArrayCacheDriverTest.php b/tests/src/Core/Cache/ArrayCacheDriverTest.php index 62c599d540..c92fb98dac 100644 --- a/tests/src/Core/Cache/ArrayCacheDriverTest.php +++ b/tests/src/Core/Cache/ArrayCacheDriverTest.php @@ -2,13 +2,8 @@ namespace Friendica\Test\src\Core\Cache; - use Friendica\Core\Cache\ArrayCache; -/** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled - */ class ArrayCacheDriverTest extends MemoryCacheTest { protected function getInstance() diff --git a/tests/src/Core/Cache/CacheTest.php b/tests/src/Core/Cache/CacheTest.php index d0b357bf46..e8bd65cbfe 100644 --- a/tests/src/Core/Cache/CacheTest.php +++ b/tests/src/Core/Cache/CacheTest.php @@ -5,7 +5,6 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\MemcachedCacheDriver; use Friendica\Test\MockedTest; use Friendica\Test\Util\AppMockTrait; -use Friendica\Test\Util\DateTimeFormatMockTrait; use Friendica\Test\Util\VFSTrait; use Friendica\Util\PidFile; @@ -13,7 +12,6 @@ abstract class CacheTest extends MockedTest { use VFSTrait; use AppMockTrait; - use DateTimeFormatMockTrait; /** * @var int Start time of the mock (used for time operations) @@ -75,19 +73,10 @@ abstract class CacheTest extends MockedTest ->shouldReceive('getHostname') ->andReturn('friendica.local'); - $this->mockUtcNow($this->startTime); - parent::setUp(); $this->instance = $this->getInstance(); - // Default config - $this->mockConfigGet('config', 'hostname', 'localhost'); - $this->mockConfigGet('system', 'throttle_limit_day', 100); - $this->mockConfigGet('system', 'throttle_limit_week', 100); - $this->mockConfigGet('system', 'throttle_limit_month', 100); - $this->mockConfigGet('system', 'theme', 'system_theme'); - $this->instance->clear(false); } diff --git a/tests/src/Core/Cache/DatabaseCacheDriverTest.php b/tests/src/Core/Cache/DatabaseCacheDriverTest.php index f035f3fecd..775a083a9b 100644 --- a/tests/src/Core/Cache/DatabaseCacheDriverTest.php +++ b/tests/src/Core/Cache/DatabaseCacheDriverTest.php @@ -16,6 +16,8 @@ class DatabaseCacheDriverTest extends CacheTest public function setUp() { + $this->mockUtcNow($this->startTime); + $this->mockConnected(); $this->mockConnect(); diff --git a/tests/src/Core/Cache/MemcacheCacheDriverTest.php b/tests/src/Core/Cache/MemcacheCacheDriverTest.php index 4a4c4ebd7e..7832344a89 100644 --- a/tests/src/Core/Cache/MemcacheCacheDriverTest.php +++ b/tests/src/Core/Cache/MemcacheCacheDriverTest.php @@ -6,16 +6,21 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; /** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled * @requires extension memcache */ class MemcacheCacheDriverTest extends MemoryCacheTest { protected function getInstance() { - $this->mockConfigGet('system', 'memcache_host', 'localhost', 1); - $this->mockConfigGet('system', 'memcache_port', 11211, 1); + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcache_host', NULL) + ->andReturn('localhost'); + + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcache_port', NULL) + ->andReturn(11211); $this->cache = CacheDriverFactory::create('memcache'); return $this->cache; diff --git a/tests/src/Core/Cache/MemcachedCacheDriverTest.php b/tests/src/Core/Cache/MemcachedCacheDriverTest.php index b118ee0f6e..fe401f97dd 100644 --- a/tests/src/Core/Cache/MemcachedCacheDriverTest.php +++ b/tests/src/Core/Cache/MemcachedCacheDriverTest.php @@ -6,15 +6,16 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; /** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled * @requires extension memcached */ class MemcachedCacheDriverTest extends MemoryCacheTest { protected function getInstance() { - $this->mockConfigGet('system', 'memcached_hosts', [0 => 'localhost, 11211']); + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcached_hosts', NULL) + ->andReturn([0 => 'localhost, 11211']); $this->cache = CacheDriverFactory::create('memcached'); return $this->cache; diff --git a/tests/src/Core/Cache/RedisCacheDriverTest.php b/tests/src/Core/Cache/RedisCacheDriverTest.php index 4530ff1c02..0a3dba439d 100644 --- a/tests/src/Core/Cache/RedisCacheDriverTest.php +++ b/tests/src/Core/Cache/RedisCacheDriverTest.php @@ -6,16 +6,21 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; /** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled * @requires extension redis */ class RedisCacheDriverTest extends MemoryCacheTest { protected function getInstance() { - $this->mockConfigGet('system', 'redis_host', 'localhost', 1); - $this->mockConfigGet('system', 'redis_port', null, 1); + $this->configCache + ->shouldReceive('get') + ->with('system', 'redis_host', NULL) + ->andReturn('localhost'); + + $this->configCache + ->shouldReceive('get') + ->with('system', 'redis_port', NULL) + ->andReturn(null); $this->cache = CacheDriverFactory::create('redis'); return $this->cache; diff --git a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php index 127a8bc3f8..41ccce0b28 100644 --- a/tests/src/Core/Console/AutomaticInstallationConsoleTest.php +++ b/tests/src/Core/Console/AutomaticInstallationConsoleTest.php @@ -52,7 +52,10 @@ class AutomaticInstallationConsoleTest extends ConsoleTest $this->db_user = getenv('MYSQL_USERNAME') . getenv('MYSQL_USER'); $this->db_pass = getenv('MYSQL_PASSWORD'); - $this->mockConfigGet('config', 'php_path', false); + $this->configCache + ->shouldReceive('get') + ->with('config', 'php_path', NULL) + ->andReturn(false); $this->mockL10nT(); } diff --git a/tests/src/Core/Console/ConfigConsoleTest.php b/tests/src/Core/Console/ConfigConsoleTest.php index 4ee34917d8..505c4f794d 100644 --- a/tests/src/Core/Console/ConfigConsoleTest.php +++ b/tests/src/Core/Console/ConfigConsoleTest.php @@ -32,7 +32,17 @@ class ConfigConsoleTest extends ConsoleTest } function testSetGetKeyValue() { - $this->mockConfigSet('config', 'test', 'now', 1); + $this->configCache + ->shouldReceive('set') + ->with('config', 'test', 'now') + ->andReturn(true) + ->once(); + $this->configCache + ->shouldReceive('get') + ->with('config', 'test', NULL) + ->andReturn('now') + ->twice(); + $console = new Config($this->consoleArgv); $console->setArgument(0, 'config'); $console->setArgument(1, 'test'); @@ -40,14 +50,24 @@ class ConfigConsoleTest extends ConsoleTest $txt = $this->dumpExecute($console); $this->assertEquals("config.test <= now\n", $txt); - $this->mockConfigGet('config', 'test', 'now', 1); + $this->configCache + ->shouldReceive('get') + ->with('config', 'test', null) + ->andReturn('now') + ->once(); + $console = new Config($this->consoleArgv); $console->setArgument(0, 'config'); $console->setArgument(1, 'test'); $txt = $this->dumpExecute($console); $this->assertEquals("config.test => now\n", $txt); - $this->mockConfigGet('config', 'test', null, 1); + $this->configCache + ->shouldReceive('get') + ->with('config', 'test', null) + ->andReturn(null) + ->once(); + $console = new Config($this->consoleArgv); $console->setArgument(0, 'config'); $console->setArgument(1, 'test'); @@ -57,7 +77,11 @@ class ConfigConsoleTest extends ConsoleTest function testSetArrayValue() { $testArray = [1, 2, 3]; - $this->mockConfigGet('config', 'test', $testArray, 1); + $this->configCache + ->shouldReceive('get') + ->with('config', 'test', null) + ->andReturn($testArray) + ->once(); $console = new Config($this->consoleArgv); $console->setArgument(0, 'config'); @@ -81,7 +105,11 @@ class ConfigConsoleTest extends ConsoleTest } function testVerbose() { - $this->mockConfigGet('test', 'it', 'now', 1); + $this->configCache + ->shouldReceive('get') + ->with('test', 'it', null) + ->andReturn('now') + ->once(); $console = new Config($this->consoleArgv); $console->setArgument(0, 'test'); $console->setArgument(1, 'it'); @@ -105,7 +133,16 @@ CONF; } function testUnableToSet() { - $this->mockConfigSet('test', 'it', 'now', 1, false); + $this->configCache + ->shouldReceive('set') + ->with('test', 'it', 'now') + ->andReturn(false) + ->once(); + $this->configCache + ->shouldReceive('get') + ->with('test', 'it', NULL) + ->andReturn(NULL) + ->once(); $console = new Config(); $console->setArgument(0, 'test'); $console->setArgument(1, 'it'); diff --git a/tests/src/Core/Lock/ArrayCacheLockDriverTest.php b/tests/src/Core/Lock/ArrayCacheLockDriverTest.php index bfea27253f..671341718b 100644 --- a/tests/src/Core/Lock/ArrayCacheLockDriverTest.php +++ b/tests/src/Core/Lock/ArrayCacheLockDriverTest.php @@ -6,10 +6,6 @@ namespace Friendica\Test\src\Core\Lock; use Friendica\Core\Cache\ArrayCache; use Friendica\Core\Lock\CacheLockDriver; -/** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled - */ class ArrayCacheLockDriverTest extends LockTest { protected function getInstance() diff --git a/tests/src/Core/Lock/LockTest.php b/tests/src/Core/Lock/LockTest.php index 2d11a71ae1..ab8e1b2f2e 100644 --- a/tests/src/Core/Lock/LockTest.php +++ b/tests/src/Core/Lock/LockTest.php @@ -25,10 +25,6 @@ abstract class LockTest extends MockedTest protected function setUp() { - parent::setUp(); - $this->instance = $this->getInstance(); - $this->instance->releaseAll(); - // Reusable App object $this->setUpVfsDir(); $configMock = \Mockery::mock('Friendica\Core\Config\ConfigCache'); @@ -37,12 +33,9 @@ abstract class LockTest extends MockedTest ->shouldReceive('getHostname') ->andReturn('friendica.local'); - // Default config - $this->mockConfigGet('config', 'hostname', 'localhost'); - $this->mockConfigGet('system', 'throttle_limit_day', 100); - $this->mockConfigGet('system', 'throttle_limit_week', 100); - $this->mockConfigGet('system', 'throttle_limit_month', 100); - $this->mockConfigGet('system', 'theme', 'system_theme'); + parent::setUp(); + $this->instance = $this->getInstance(); + $this->instance->releaseAll(); } protected function tearDown() diff --git a/tests/src/Core/Lock/MemcacheCacheLockDriverTest.php b/tests/src/Core/Lock/MemcacheCacheLockDriverTest.php index d7002037e0..46f29f52e2 100644 --- a/tests/src/Core/Lock/MemcacheCacheLockDriverTest.php +++ b/tests/src/Core/Lock/MemcacheCacheLockDriverTest.php @@ -8,15 +8,20 @@ use Friendica\Core\Lock\CacheLockDriver; /** * @requires extension Memcache - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled */ class MemcacheCacheLockDriverTest extends LockTest { protected function getInstance() { - $this->mockConfigGet('system', 'memcache_host', 'localhost', 1); - $this->mockConfigGet('system', 'memcache_port', 11211, 1); + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcache_host', NULL) + ->andReturn('localhost'); + + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcache_port', NULL) + ->andReturn(11211); return new CacheLockDriver(CacheDriverFactory::create('memcache')); } diff --git a/tests/src/Core/Lock/MemcachedCacheLockDriverTest.php b/tests/src/Core/Lock/MemcachedCacheLockDriverTest.php index 3ba6de53ef..72271c98b9 100644 --- a/tests/src/Core/Lock/MemcachedCacheLockDriverTest.php +++ b/tests/src/Core/Lock/MemcachedCacheLockDriverTest.php @@ -8,14 +8,15 @@ use Friendica\Core\Lock\CacheLockDriver; /** * @requires extension memcached - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled */ class MemcachedCacheLockDriverTest extends LockTest { protected function getInstance() { - $this->mockConfigGet('system', 'memcached_hosts', [0 => 'localhost, 11211']); + $this->configCache + ->shouldReceive('get') + ->with('system', 'memcached_hosts', NULL) + ->andReturn([0 => 'localhost, 11211']); return new CacheLockDriver(CacheDriverFactory::create('memcached')); } diff --git a/tests/src/Core/Lock/RedisCacheLockDriverTest.php b/tests/src/Core/Lock/RedisCacheLockDriverTest.php index 765055add0..0c9deea16e 100644 --- a/tests/src/Core/Lock/RedisCacheLockDriverTest.php +++ b/tests/src/Core/Lock/RedisCacheLockDriverTest.php @@ -8,15 +8,20 @@ use Friendica\Core\Lock\CacheLockDriver; /** * @requires extension redis - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled */ class RedisCacheLockDriverTest extends LockTest { protected function getInstance() { - $this->mockConfigGet('system', 'redis_host', 'localhost', 1); - $this->mockConfigGet('system', 'redis_port', null, 1); + $this->configCache + ->shouldReceive('get') + ->with('system', 'redis_host', NULL) + ->andReturn('localhost'); + + $this->configCache + ->shouldReceive('get') + ->with('system', 'redis_port', NULL) + ->andReturn(null); return new CacheLockDriver(CacheDriverFactory::create('redis')); } diff --git a/tests/src/Core/Lock/SemaphoreLockDriverTest.php b/tests/src/Core/Lock/SemaphoreLockDriverTest.php index 58daa3516c..c2b9414572 100644 --- a/tests/src/Core/Lock/SemaphoreLockDriverTest.php +++ b/tests/src/Core/Lock/SemaphoreLockDriverTest.php @@ -4,10 +4,6 @@ namespace Friendica\Test\src\Core\Lock; use Friendica\Core\Lock\SemaphoreLockDriver; -/** - * @runTestsInSeparateProcesses - * @preserveGlobalState disabled - */ class SemaphoreLockDriverTest extends LockTest { public function setUp() @@ -15,7 +11,11 @@ class SemaphoreLockDriverTest extends LockTest parent::setUp(); $this->app->shouldReceive('getHostname')->andReturn('friendica.local'); - $this->mockConfigGet('system', 'temppath', '/tmp/'); + + $this->configCache + ->shouldReceive('get') + ->with('system', 'temppath', NULL) + ->andReturn('/tmp/'); } protected function getInstance() diff --git a/tests/src/Database/DBStructureTest.php b/tests/src/Database/DBStructureTest.php index 53c4e8895b..bc50a0a691 100644 --- a/tests/src/Database/DBStructureTest.php +++ b/tests/src/Database/DBStructureTest.php @@ -21,13 +21,6 @@ class DBStructureTest extends DatabaseTest $this->logOutput = FActory\LoggerFactory::enableTest($this->app->getLogger()); parent::setUp(); - - // Default config - Config::set('config', 'hostname', 'localhost'); - Config::set('system', 'throttle_limit_day', 100); - Config::set('system', 'throttle_limit_week', 100); - Config::set('system', 'throttle_limit_month', 100); - Config::set('system', 'theme', 'system_theme'); } /**