From 65e830b42135d7d6a075dc6935347b4eecb463a5 Mon Sep 17 00:00:00 2001
From: Gleb Levitin <gleb.levitin@dkd.de>
Date: Wed, 8 Jun 2016 12:00:25 +0200
Subject: [PATCH] [TASK] Migrate abstract functional test case to use Doctrine
 DBAL.

Resolves: #76517
Releases: master
Change-Id: I08c0a1bbffa53598687ee7589d3ea09d4397453e
Reviewed-on: https://review.typo3.org/48514
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
---
 .../core/Classes/Tests/FunctionalTestCase.php | 35 +++++++++++++------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/typo3/sysext/core/Classes/Tests/FunctionalTestCase.php b/typo3/sysext/core/Classes/Tests/FunctionalTestCase.php
index 9e60acdea5cd..5dc01fe7e82a 100644
--- a/typo3/sysext/core/Classes/Tests/FunctionalTestCase.php
+++ b/typo3/sysext/core/Classes/Tests/FunctionalTestCase.php
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Core\Tests;
 
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
 use TYPO3\CMS\Core\Core\Bootstrap;
+use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Tests\Functional\Framework\Frontend\Response;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 
@@ -259,9 +260,11 @@ abstract class FunctionalTestCase extends BaseTestCase
      * $GLOBALS['TYPO3_DB'] for easy IDE auto completion.
      *
      * @return \TYPO3\CMS\Core\Database\DatabaseConnection
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9
      */
     protected function getDatabaseConnection()
     {
+        GeneralUtility::logDeprecatedFunction();
         return $GLOBALS['TYPO3_DB'];
     }
 
@@ -275,8 +278,15 @@ abstract class FunctionalTestCase extends BaseTestCase
     protected function setUpBackendUserFromFixture($userUid)
     {
         $this->importDataSet(ORIGINAL_ROOT . $this->backendUserFixture);
-        $database = $this->getDatabaseConnection();
-        $userRow = $database->exec_SELECTgetSingleRow('*', 'be_users', 'uid = ' . (int)$userUid);
+
+        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('be_users');
+        $queryBuilder->getRestrictions()->removeAll();
+
+        $userRow = $queryBuilder->select('*')
+            ->from('be_users')
+            ->where($queryBuilder->expr()->eq('uid', (int) $userUid))
+            ->execute()
+            ->fetch();
 
         /** @var $backendUser BackendUserAuthentication */
         $backendUser = GeneralUtility::makeInstance(BackendUserAuthentication::class);
@@ -320,31 +330,36 @@ abstract class FunctionalTestCase extends BaseTestCase
     protected function setUpFrontendRootPage($pageId, array $typoScriptFiles = array())
     {
         $pageId = (int)$pageId;
-        $page = $this->getDatabaseConnection()->exec_SELECTgetSingleRow('*', 'pages', 'uid=' . $pageId);
+
+        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('pages');
+        $page = $connection->select(['*'], 'pages', ['uid' => $pageId])->fetch();
 
         if (empty($page)) {
             $this->fail('Cannot set up frontend root page "' . $pageId . '"');
         }
 
-        $pagesFields = array(
-            'is_siteroot' => 1
+        $connection->update(
+            'pages',
+            ['is_siteroot' => 1],
+            ['uid' => $pageId]
         );
 
-        $this->getDatabaseConnection()->exec_UPDATEquery('pages', 'uid=' . $pageId, $pagesFields);
-
-        $templateFields = array(
+        $templateFields = [
             'pid' => $pageId,
             'title' => '',
             'config' => '',
             'clear' => 3,
             'root' => 1,
-        );
+        ];
 
         foreach ($typoScriptFiles as $typoScriptFile) {
             $templateFields['config'] .= '<INCLUDE_TYPOSCRIPT: source="FILE:' . $typoScriptFile . '">' . LF;
         }
 
-        $this->getDatabaseConnection()->exec_INSERTquery('sys_template', $templateFields);
+        GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('sys_template')->insert(
+            'sys_template',
+            $templateFields
+        );
     }
 
     /**
-- 
GitLab