X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2FDatabaseTest.php;h=4f0275493c8f659d28734c99052cd3145080ff2a;hb=fe51c53798e5b2ec0032c478ade8bb7b1255a023;hp=fec31b05af6f69aa49deee5c16a9c957a445b5c7;hpb=76414a51691dfffefd4de11fe025e44a9a59586a;p=friendica.git diff --git a/tests/DatabaseTest.php b/tests/DatabaseTest.php index fec31b05af..4f0275493c 100644 --- a/tests/DatabaseTest.php +++ b/tests/DatabaseTest.php @@ -5,72 +5,56 @@ namespace Friendica\Test; -use Friendica\App; -use Friendica\Database\DBA; -use Friendica\Factory; -use Friendica\Util\BasePath; -use Friendica\Util\Config\ConfigFileLoader; -use Friendica\Util\Profiler; -use PHPUnit\DbUnit\DataSet\YamlDataSet; -use PHPUnit\DbUnit\TestCaseTrait; -use PHPUnit_Extensions_Database_DB_IDatabaseConnection; - -require_once __DIR__ . '/../boot.php'; +use Friendica\Database\Database; +use Friendica\Test\Util\Database\StaticDatabase; /** * Abstract class used by tests that need a database. */ abstract class DatabaseTest extends MockedTest { - use TestCaseTrait; + protected function setUp() + { + parent::setUp(); + + StaticDatabase::statConnect($_SERVER); + // Rollbacks every DB usage (in case the test couldn't call tearDown) + StaticDatabase::statRollback(); + // Start the first, outer transaction + StaticDatabase::getGlobConnection()->beginTransaction(); + } + + protected function tearDown() + { + // Rollbacks every DB usage so we don't commit anything into the DB + StaticDatabase::statRollback(); + + parent::tearDown(); + } /** - * Get database connection. - * - * This function is executed before each test in order to get a database connection that can be used by tests. - * If no prior connection is available, it tries to create one using the USER, PASS and DB environment variables. + * Loads a given DB fixture for this DB test * - * If it could not connect to the database, the test is skipped. + * @param string $fixture The path to the fixture + * @param Database $dba The DB connection * - * @return PHPUnit_Extensions_Database_DB_IDatabaseConnection - * @see https://phpunit.de/manual/5.7/en/database.html + * @throws \Exception */ - protected function getConnection() + protected function loadFixture(string $fixture, Database $dba) { - if (!getenv('MYSQL_DATABASE')) { - $this->markTestSkipped('Please set the MYSQL_* environment variables to your test database credentials.'); - } - - $basePath = BasePath::create(dirname(__DIR__)); - $mode = new App\Mode($basePath); - $configLoader = new ConfigFileLoader($basePath, $mode); - $config = Factory\ConfigFactory::createCache($configLoader); + $this->assertFileExists($fixture); - $profiler = \Mockery::mock(Profiler::class); + $data = include $fixture; - DBA::connect( - $basePath, - $config, - $profiler, - getenv('MYSQL_HOST'), - getenv('MYSQL_USERNAME'), - getenv('MYSQL_PASSWORD'), - getenv('MYSQL_DATABASE')); + foreach ($data as $tableName => $rows) { + if (!is_array($rows)) { + $dba->p('TRUNCATE TABLE `' . $tableName . '``'); + continue; + } - if (!DBA::connected()) { - $this->markTestSkipped('Could not connect to the database.'); + foreach ($rows as $row) { + $dba->insert($tableName, $row); + } } - - return $this->createDefaultDBConnection(DBA::getConnection(), getenv('MYSQL_DATABASE')); - } - - /** - * Get dataset to populate the database with. - * @return YamlDataSet - * @see https://phpunit.de/manual/5.7/en/database.html - */ - protected function getDataSet() - { - return new YamlDataSet(__DIR__ . '/datasets/api.yml'); } }