Introduce test optimization

- Add static connection for whole tests
- Introduce ExtendedPDO class to enable nested transactions
- Add rollback logic for tests to ensure reliability and increase speed
This commit is contained in:
Philipp Holzer 2019-07-27 14:37:24 +02:00
parent 07aaf292ec
commit 37d03bbeae
No known key found for this signature in database
GPG key ID: D8365C3D36B77D90
5 changed files with 246 additions and 50 deletions

View file

@ -12,7 +12,9 @@ use Friendica\Core\Config;
use Friendica\Core\PConfig;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Database\Database;
use Friendica\Network\HTTPException;
use Friendica\Test\Util\Database\StaticDatabase;
use Monolog\Handler\TestHandler;
require_once __DIR__ . '/../../include/api.php';
@ -47,13 +49,16 @@ class ApiTest extends DatabaseTest
*/
public function setUp()
{
parent::setUp();
StaticDatabase::statRollback();
$dice = new Dice();
$dice = $dice->addRules(include __DIR__ . '/../../static/dependencies.config.php');
$dice = $dice->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
BaseObject::setDependencyInjection($dice);
$this->app = BaseObject::getApp();
parent::setUp();
$this->app->argc = 1;
$this->app->argv = ['home'];
@ -99,6 +104,11 @@ class ApiTest extends DatabaseTest
Config::set('system', 'theme', 'system_theme');
}
protected function tearDown()
{
StaticDatabase::statRollback();
}
/**
* Assert that an user array contains expected keys.
* @param array $user User array