Skip to content

Commit 6e18511

Browse files
committed
[!!!][TASK] Replace QueryGenerator with PageRepository
If a storage page is hidden, it is not used anymore
1 parent 6d44745 commit 6e18511

5 files changed

Lines changed: 26 additions & 113 deletions

File tree

Build/Scripts/runTests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ TEST_SUITE=""
310310
TYPO3_VERSION="12"
311311
DBMS="mysql"
312312
DBMS_VERSION=""
313-
PHP_VERSION="8.1"
313+
PHP_VERSION="8.2"
314314
PHP_XDEBUG_ON=0
315315
PHP_XDEBUG_PORT=9003
316316
EXTRA_TEST_OPTIONS=""

Classes/Controller/AddressController.php

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
* LICENSE.txt file that was distributed with this source code.
1212
*/
1313

14-
use FriendsOfTYPO3\TtAddress\Database\QueryGenerator;
1514
use FriendsOfTYPO3\TtAddress\Domain\Model\Address;
1615
use FriendsOfTYPO3\TtAddress\Domain\Model\Dto\Demand;
1716
use FriendsOfTYPO3\TtAddress\Domain\Model\Dto\Settings;
@@ -20,6 +19,7 @@
2019
use FriendsOfTYPO3\TtAddress\Utility\CacheUtility;
2120
use FriendsOfTYPO3\TtAddress\Utility\TypoScript;
2221
use Psr\Http\Message\ResponseInterface;
22+
use TYPO3\CMS\Core\Domain\Repository\PageRepository;
2323
use TYPO3\CMS\Core\Pagination\ArrayPaginator;
2424
use TYPO3\CMS\Core\Pagination\PaginatorInterface;
2525
use TYPO3\CMS\Core\Pagination\SimplePagination;
@@ -34,12 +34,12 @@
3434
class AddressController extends ActionController
3535
{
3636
protected AddressRepository $addressRepository;
37-
protected QueryGenerator$queryGenerator;
37+
protected PageRepository $pageRepository;
3838
protected Settings $extensionConfiguration;
3939

4040
public function initializeAction(): void
4141
{
42-
$this->queryGenerator = GeneralUtility::makeInstance(QueryGenerator::class);
42+
$this->pageRepository = GeneralUtility::makeInstance(PageRepository::class);
4343
$this->extensionConfiguration = GeneralUtility::makeInstance(Settings::class);
4444
}
4545

@@ -231,19 +231,8 @@ protected function removeDotAtTheEnd($string): string
231231
*/
232232
protected function getPidList(): array
233233
{
234-
$rootPIDs = explode(',', $this->settings['pages']);
235-
$pidList = $rootPIDs;
236-
237-
// iterate through root-page ids and merge to array
238-
foreach ($rootPIDs as $pid) {
239-
// @extensionScannerIgnoreLine
240-
$result = $this->queryGenerator->getTreeList($pid, (int) ($this->settings['recursive'] ?? 0));
241-
if ($result) {
242-
$subtreePids = explode(',', $result);
243-
$pidList = array_merge($pidList, $subtreePids);
244-
}
245-
}
246-
return $pidList;
234+
$rootPIDs = explode(',', $this->settings['pages'] ?? '');
235+
return $this->pageRepository->getPageIdsRecursive($rootPIDs, (int) ($this->settings['recursive'] ?? 0));
247236
}
248237

249238
/**

Classes/Database/QueryGenerator.php

Lines changed: 0 additions & 73 deletions
This file was deleted.

Tests/Unit/Controller/AddressControllerTest.php

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@
1717
use FriendsOfTYPO3\TtAddress\Domain\Model\Dto\Demand;
1818
use FriendsOfTYPO3\TtAddress\Domain\Model\Dto\Settings;
1919
use FriendsOfTYPO3\TtAddress\Domain\Repository\AddressRepository;
20+
use TYPO3\CMS\Core\Cache\CacheDataCollectorInterface;
21+
use TYPO3\CMS\Core\Domain\Repository\PageRepository;
22+
use TYPO3\CMS\Core\Http\ServerRequest;
2023
use TYPO3\CMS\Core\Package\PackageManager;
2124
use TYPO3\CMS\Core\Utility\GeneralUtility;
2225
use TYPO3\CMS\Extbase\Configuration\ConfigurationManager;
2326
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;
27+
use TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters;
2428
use TYPO3\CMS\Extbase\Mvc\Request;
2529
use TYPO3\CMS\Fluid\View\TemplateView;
2630
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
@@ -31,7 +35,13 @@ class AddressControllerTest extends BaseTestCase
3135
{
3236
protected function setUp(): void
3337
{
34-
$GLOBALS['TSFE'] = $this->getAccessibleMock(TypoScriptFrontendController::class, ['addCacheTags'], [], '', false);
38+
$mockedCacheDataCollector =$this->getMockBuilder(CacheDataCollectorInterface::class)->getMock();
39+
40+
$serverRequest = (new ServerRequest())
41+
->withAttribute('extbase', new ExtbaseRequestParameters())
42+
->withAttribute('frontend.cache.collector', $mockedCacheDataCollector);
43+
44+
$GLOBALS['TYPO3_REQUEST'] = $serverRequest;
3545
}
3646

3747
/**
@@ -79,23 +89,6 @@ public function dotsAreRemovedFromArray()
7989
self::assertEquals($expected, $subject->_call('removeDots', $given));
8090
}
8191

82-
/**
83-
* @test
84-
*/
85-
public function initializeActionWorks()
86-
{
87-
$mockedPackageManager = $this->getAccessibleMock(PackageManager::class, null, [], '', false);
88-
GeneralUtility::setSingletonInstance(PackageManager::class, $mockedPackageManager);
89-
90-
$subject = $this->getAccessibleMock(AddressController::class, null, [], '', false);
91-
$subject->_set('extensionConfiguration', $this->getMockedSettings());
92-
$subject->initializeAction();
93-
94-
$expected = new QueryGenerator();
95-
96-
self::assertEquals($expected, $subject->_get('queryGenerator'));
97-
}
98-
9992
/**
10093
* @test
10194
*/
@@ -114,17 +107,21 @@ public function injectAddressRepositoryWorks()
114107
*/
115108
public function pidListIsReturned()
116109
{
117-
$mockedQueryGenerator = $this->getAccessibleMock(QueryGenerator::class, ['getTreeList'], [], '', false);
118-
$mockedQueryGenerator->expects(self::any())->method('getTreeList');
110+
$mockedPageRepsitory = $this->getAccessibleMock(PageRepository::class, ['getPageIdsRecursive'], [], '', false);
111+
$mockedPageRepsitory->expects(self::any())
112+
->method('getPageIdsRecursive')
113+
->with([123, 456], 3)
114+
->willReturn([123, 456, 789]);
115+
;
119116

120117
$subject = $this->getAccessibleMock(AddressController::class, null, [], '', false);
121-
$subject->_set('queryGenerator', $mockedQueryGenerator);
118+
$subject->_set('pageRepository', $mockedPageRepsitory);
122119
$subject->_set('settings', [
123120
'pages' => '123,456',
124121
'recursive' => 3,
125122
]);
126123

127-
self::assertEquals(['123', '456'], $subject->_call('getPidList'));
124+
self::assertEquals([123, 456, 789], $subject->_call('getPidList'));
128125
}
129126

130127
/**

Tests/Unit/Utility/CacheUtilityTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class CacheUtilityTest extends BaseTestCase
3131
public function nonArrayRecordInstancesAreSkippedForCacheTags()
3232
{
3333
$addressRecords = ['dummy string'];
34-
34+
3535
$mockedCacheDataCollector =$this->getMockBuilder(CacheDataCollectorInterface::class)->getMock();
3636
$mockedCacheDataCollector
3737
->expects($this->never())

0 commit comments

Comments
 (0)