Skip to content

Instantly share code, notes, and snippets.

@tomasnorre
Created October 24, 2019 14:56
Show Gist options
  • Save tomasnorre/120dbde41b98b8f4d52234d4f0946864 to your computer and use it in GitHub Desktop.
Save tomasnorre/120dbde41b98b8f4d52234d4f0946864 to your computer and use it in GitHub Desktop.
<?php
namespace Aoe\AoeDbSequenzer\Xclass;
use Aoe\AoeDbSequenzer\Sequenzer;
use Aoe\AoeDbSequenzer\Service\Typo3Service;
use TYPO3\CMS\Core\Database\Query\QueryBuilder as CoreQueryBuilder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/**
* @package Aoe\AoeDbSequenzer\Xclass
*/
class QueryBuilder extends CoreQueryBuilder
{
/**
* Determines the defined table name without quotation marks (`).
*
* @return string
*/
protected function getTableName()
{
$mark = '`';
$tableName = $this->concreteQueryBuilder->getQueryPart('from')['table'];
if (!empty($tableName) && $tableName[0] === $mark && $tableName[strlen($tableName) - 1] === $mark) {
return str_replace($mark, '', $tableName);
}
return $tableName;
}
<?php
namespace Aoe\AoeDbSequenzer\Tests\Functional\Xclass;
use Aoe\AoeDbSequenzer\Xclass\QueryBuilder;
use Doctrine\DBAL\Driver\PDOMySql\Driver;
use Nimut\TestingFramework\TestCase\FunctionalTestCase;
use TYPO3\CMS\Core\Database\Connection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class QueryBuilderTest extends FunctionalTestCase
/**
* @var QueryBuilder
*/
protected $subject;
/**
* @test
*/
public function getTableNameReturnsStringWithoutQuotationMarks()
{
$params = [];
$driver = new Driver();
$connection = GeneralUtility::makeInstance(Connection::class, $params, $driver);
$this->subject = $this->getAccessibleMock(QueryBuilder::class, ['dummy'], [$connection]);
$mockedQueryBuilder = $this->getAccessibleMock(\Doctrine\DBAL\Query\QueryBuilder::class, ['getQueryPart'], [$connection]);
$mockedQueryBuilder->expects($this->any())->method('getQueryPart')->willReturn($this->returnValue("`tableName`"));
$this->inject($this->subject, 'concreteQueryBuilder', $mockedQueryBuilder);
$this->assertEquals(
'tableName',
$this->subject->_call('getTableName')
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment