]> git.mxchange.org Git - friendica.git/blob - tests/DatabaseTestTrait.php
Merge pull request #7971 from annando/issue-7685
[friendica.git] / tests / DatabaseTestTrait.php
1 <?php
2 /**
3  * DatabaseTest class.
4  */
5
6 namespace Friendica\Test;
7
8 use Friendica\Database\Database;
9 use Friendica\Test\Util\Database\StaticDatabase;
10
11 /**
12  * Abstract class used by tests that need a database.
13  */
14 trait DatabaseTestTrait
15 {
16         protected function setUp()
17         {
18                 StaticDatabase::statConnect($_SERVER);
19                 // Rollbacks every DB usage (in case the test couldn't call tearDown)
20                 StaticDatabase::statRollback();
21                 // Start the first, outer transaction
22                 StaticDatabase::getGlobConnection()->beginTransaction();
23
24                 parent::setUp();
25         }
26
27         protected function tearDown()
28         {
29                 // Rollbacks every DB usage so we don't commit anything into the DB
30                 StaticDatabase::statRollback();
31
32                 parent::tearDown();
33         }
34
35         /**
36          * Loads a given DB fixture for this DB test
37          *
38          * @param string   $fixture The path to the fixture
39          * @param Database $dba     The DB connection
40          *
41          * @throws \Exception
42          */
43         protected function loadFixture(string $fixture, Database $dba)
44         {
45                 $data = include $fixture;
46
47                 foreach ($data as $tableName => $rows) {
48                         if (!is_array($rows)) {
49                                 $dba->p('TRUNCATE TABLE `' . $tableName . '``');
50                                 continue;
51                         }
52
53                         foreach ($rows as $row) {
54                                 $dba->insert($tableName, $row);
55                         }
56                 }
57         }
58 }