2018-04-09 21:23:41 +02:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* DatabaseTest class.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Friendica\Test;
|
|
|
|
|
2019-07-28 20:46:29 +02:00
|
|
|
use Friendica\Database\Database;
|
2019-07-27 14:37:24 +02:00
|
|
|
use Friendica\Test\Util\Database\StaticDatabase;
|
2018-10-22 20:59:51 +02:00
|
|
|
|
2018-04-09 21:23:41 +02:00
|
|
|
/**
|
|
|
|
* Abstract class used by tests that need a database.
|
|
|
|
*/
|
2018-11-01 13:44:47 +01:00
|
|
|
abstract class DatabaseTest extends MockedTest
|
2018-04-09 21:23:41 +02:00
|
|
|
{
|
2019-07-28 17:40:42 +02:00
|
|
|
protected function setUp()
|
2018-04-09 21:23:41 +02:00
|
|
|
{
|
2019-07-28 17:40:42 +02:00
|
|
|
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();
|
2018-04-09 21:23:41 +02:00
|
|
|
}
|
|
|
|
|
2019-07-28 17:40:42 +02:00
|
|
|
protected function tearDown()
|
2018-04-09 21:23:41 +02:00
|
|
|
{
|
2019-07-28 17:40:42 +02:00
|
|
|
// Rollbacks every DB usage so we don't commit anything into the DB
|
|
|
|
StaticDatabase::statRollback();
|
|
|
|
|
|
|
|
parent::tearDown();
|
2018-04-09 21:23:41 +02:00
|
|
|
}
|
2019-07-28 20:46:29 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Loads a given DB fixture for this DB test
|
|
|
|
*
|
|
|
|
* @param string $fixture The path to the fixture
|
|
|
|
* @param Database $dba The DB connection
|
|
|
|
*
|
|
|
|
* @throws \Exception
|
|
|
|
*/
|
|
|
|
protected function loadFixture(string $fixture, Database $dba)
|
|
|
|
{
|
|
|
|
$this->assertFileExists($fixture);
|
|
|
|
|
|
|
|
$data = include $fixture;
|
|
|
|
|
|
|
|
foreach ($data as $tableName => $rows) {
|
|
|
|
if (!is_array($rows)) {
|
|
|
|
$dba->p('TRUNCATE TABLE `' . $tableName . '``');
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach ($rows as $row) {
|
|
|
|
$dba->insert($tableName, $row);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-04-09 21:23:41 +02:00
|
|
|
}
|