X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2FDatabaseTest.php;h=5f9d3bf72cdc05b835e18443463f01c5bc49a296;hb=a8e6a57e9b955989f8fd7a7c7d530366d3774eda;hp=04509724ac103b3aaf568a750992845cba68a986;hpb=c829e4372561660a1b7f365e3210cc7d49124642;p=friendica.git diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php index 04509724ac..5f9d3bf72c 100644 --- a/tests/DatabaseTest.php +++ b/tests/DatabaseTest.php @@ -5,95 +5,53 @@ namespace Friendica\Test; -use dba; -use Friendica\App; -use Friendica\Core\Config; -use Friendica\Database\DBStructure; -use PHPUnit_Extensions_Database_DB_IDatabaseConnection; +use Friendica\App\Mode; +use Friendica\Core\Config\Cache\ConfigCache; +use Friendica\Database\Database; +use Friendica\Factory\ConfigFactory; +use Friendica\Util\BasePath; +use Friendica\Util\ConfigFileLoader; +use Friendica\Util\Profiler; use PHPUnit\DbUnit\DataSet\YamlDataSet; use PHPUnit\DbUnit\TestCaseTrait; -use PHPUnit\Framework\TestCase; +use PHPUnit_Extensions_Database_DB_IDatabaseConnection; +use Psr\Log\NullLogger; + +require_once __DIR__ . '/../boot.php'; /** * Abstract class used by tests that need a database. */ -abstract class DatabaseTest extends TestCase +abstract class DatabaseTest extends MockedTest { - /** - * @var \Friendica\App - */ - protected $app; - use TestCaseTrait; - /** - * Creates basic instances for testing with databases - * - * @throws \Exception - */ - protected function setUp() - { - global $a; - parent::setUp(); - - // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; - - // 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'); - } - - /** - * Renames an eventually existing .htconfig.php to .htconfig.php.tmp - * Creates a new .htconfig.php for bin/worker.php execution - */ - public static function setUpBeforeClass() - { - parent::setUpBeforeClass(); - - $base_config_file_name = 'htconfig.php'; - $config_file_name = '.htconfig.php'; + /** @var Database */ + protected static $dba; - $base_config_file_path = stream_resolve_include_path($base_config_file_name); - $config_file_path = dirname($base_config_file_path) . DIRECTORY_SEPARATOR . $config_file_name; - $config_file_path_tmp = $config_file_path . '.tmp'; + /** @var BasePath */ + protected static $basePath; - if (file_exists($config_file_path)) { - rename($config_file_path, $config_file_path_tmp); - } + /** @var Mode */ + protected static $mode; - $config_string = file_get_contents($base_config_file_path); + /** @var ConfigCache */ + protected static $configCache; - $config_string = str_replace('die(', '// die(', $config_string); + /** @var Profiler */ + protected static $profiler; - file_put_contents($config_file_path, $config_string); - } - - /** - * Delete the created .htconfig.php - * Renames an eventually existing .htconfig.php.tmp to .htconfig.php - */ - public static function tearDownAfterClass() + public static function setUpBeforeClass() { - $base_config_file_name = 'htconfig.php'; - $config_file_name = '.htconfig.php'; - - $base_config_file_path = stream_resolve_include_path($base_config_file_name); - $config_file_path = dirname($base_config_file_path) . DIRECTORY_SEPARATOR . $config_file_name; - $config_file_path_tmp = $config_file_path . '.tmp'; - - if (file_exists($config_file_path)) { - unlink($config_file_path); - } + parent::setUpBeforeClass(); - if (file_exists($config_file_path_tmp)) { - rename($config_file_path_tmp, $config_file_path); - } + self::$basePath = new BasePath(dirname(__DIR__)); + $configLoader = new ConfigFileLoader(self::$basePath->getPath()); + $configFactory = new ConfigFactory(); + self::$configCache = $configFactory->createCache($configLoader); + self::$profiler = new Profiler(self::$configCache); + self::$dba = new Database(self::$configCache, self::$profiler, new NullLogger(), $_SERVER); + self::$mode = new Mode(self::$basePath, self::$dba, self::$configCache); } /** @@ -109,24 +67,17 @@ abstract class DatabaseTest extends TestCase */ protected function getConnection() { - if (!dba::$connected) { - dba::connect(getenv('MYSQL_HOST') . ':' . getenv('MYSQL_PORT'), getenv('MYSQL_USERNAME'), getenv('MYSQL_PASSWORD'), getenv('MYSQL_DATABASE')); - - if (dba::$connected) { - $app = get_app(); - // We need to do this in order to disable logging - $app->mode = \Friendica\App::MODE_INSTALL; - - // Create database structure - DBStructure::update(false, true, true); + if (!getenv('MYSQL_DATABASE')) { + $this->markTestSkipped('Please set the MYSQL_* environment variables to your test database credentials.'); + } - $app->mode = \Friendica\App::MODE_NORMAL; - } else { - $this->markTestSkipped('Could not connect to the database. Please check the MYSQL_* environment variables.'); + if (!self::$dba->isConnected()) { + if (!self::$dba->connect()) { + $this->markTestSkipped('Could not connect to the database.'); } } - return $this->createDefaultDBConnection(dba::get_db(), getenv('MYSQL_DATABASE')); + return $this->createDefaultDBConnection(self::$dba->getConnection(), getenv('MYSQL_DATABASE')); } /**