]> git.mxchange.org Git - friendica.git/blobdiff - tests/DatabaseTestTrait.php
allow hosts to be validated even if ipv6 fails
[friendica.git] / tests / DatabaseTestTrait.php
index 7d255c693b5b9ff996b5ee28d4771b15469293ca..79ff5ae162267bedf4448eaa5e7da088c730052e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2024, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -34,6 +34,8 @@ trait DatabaseTestTrait
                StaticDatabase::statConnect($_SERVER);
                // Rollbacks every DB usage (in case the test couldn't call tearDown)
                StaticDatabase::statRollback();
+               // Rollback the first, outer transaction just 2 be sure
+               StaticDatabase::getGlobConnection()->rollBack();
                // Start the first, outer transaction
                StaticDatabase::getGlobConnection()->beginTransaction();
        }
@@ -51,28 +53,45 @@ trait DatabaseTestTrait
        /**
         * Loads a given DB fixture for this DB test
         *
-        * @param string   $fixture The path to the fixture
+        * @param string[][] $fixture The fixture array
         * @param Database $dba     The DB connection
         *
         * @throws \Exception
         */
-       protected function loadFixture(string $fixture, Database $dba)
+       protected function loadDirectFixture(array $fixture, Database $dba)
        {
-               $data = include $fixture;
-
-               foreach ($data as $tableName => $rows) {
+               foreach ($fixture as $tableName => $rows) {
                        if (is_numeric($tableName)) {
                                continue;
                        }
 
                        if (!is_array($rows)) {
-                               $dba->p('TRUNCATE TABLE `' . $tableName . '``');
+                               $dba->e('TRUNCATE TABLE `' . $tableName . '``');
                                continue;
                        }
 
                        foreach ($rows as $row) {
-                               $dba->insert($tableName, $row, true);
+                               if (is_array($row)) {
+                                       $dba->insert($tableName, $row, true);
+                               } else {
+                                       throw new \Exception('row isn\'t an array');
+                               }
                        }
                }
        }
+
+       /**
+        * Loads a given DB fixture-file 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)
+       {
+               $data = include $fixture;
+
+               $this->loadDirectFixture($data, $dba);
+       }
 }