friendica/tests/DatabaseTest.php

61 lines
1.2 KiB
PHP
Raw Normal View History

2018-04-09 21:23:41 +02:00
<?php
/**
* DatabaseTest class.
*/
namespace Friendica\Test;
use Friendica\Database\Database;
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
{
protected function setUp()
2018-04-09 21:23:41 +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
}
protected function tearDown()
2018-04-09 21:23:41 +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
}
/**
* 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
}