From 4e0cd50a67b26499aa7ff521f4eb2c6989dc1bad Mon Sep 17 00:00:00 2001 From: Claus Due Date: Tue, 28 Jan 2025 14:20:15 +0100 Subject: [PATCH] [TASK] Introduce a proxy for FileRepository --- Classes/Proxy/FileRepositoryProxy.php | 20 +++++++++++++++++++ .../Resource/Record/FalViewHelper.php | 7 ++++--- Configuration/Services.yaml | 3 +++ .../Form/HasValidatorViewHelperTest.php | 4 ++-- .../Content/Resources/FalViewHelperTest.php | 4 ++-- .../Page/Resources/FalViewHelperTest.php | 4 ++-- .../Resource/Record/FalViewHelperTest.php | 6 +++--- phpstan-baseline.neon | 4 ++++ 8 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 Classes/Proxy/FileRepositoryProxy.php diff --git a/Classes/Proxy/FileRepositoryProxy.php b/Classes/Proxy/FileRepositoryProxy.php new file mode 100644 index 000000000..ee561b468 --- /dev/null +++ b/Classes/Proxy/FileRepositoryProxy.php @@ -0,0 +1,20 @@ +fileRepository = $fileRepository; + } + + public function findByRelation(string $tableName, string $fieldName, int $uid, ?int $workspaceId = null): array + { + return $this->fileRepository->findByRelation($tableName, $fieldName, $uid, $workspaceId); + } +} diff --git a/Classes/ViewHelpers/Resource/Record/FalViewHelper.php b/Classes/ViewHelpers/Resource/Record/FalViewHelper.php index e6be5f312..6579ff845 100644 --- a/Classes/ViewHelpers/Resource/Record/FalViewHelper.php +++ b/Classes/ViewHelpers/Resource/Record/FalViewHelper.php @@ -9,6 +9,7 @@ */ use FluidTYPO3\Vhs\Proxy\DoctrineQueryProxy; +use FluidTYPO3\Vhs\Proxy\FileRepositoryProxy; use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy; use FluidTYPO3\Vhs\Utility\ResourceUtility; use TYPO3\CMS\Core\Database\Connection; @@ -55,7 +56,7 @@ class FalViewHelper extends AbstractRecordResourceViewHelper protected $resourceFactory; /** - * @var FileRepository + * @var FileRepositoryProxy */ protected $fileRepository; @@ -72,8 +73,8 @@ public function __construct() /** @var ResourceFactoryProxy $resourceFactory */ $resourceFactory = GeneralUtility::makeInstance(ResourceFactoryProxy::class); $this->resourceFactory = $resourceFactory; - /** @var FileRepository $fileRepository */ - $fileRepository = GeneralUtility::makeInstance(FileRepository::class); + /** @var FileRepositoryProxy $fileRepository */ + $fileRepository = GeneralUtility::makeInstance(FileRepositoryProxy::class); $this->fileRepository = $fileRepository; } diff --git a/Configuration/Services.yaml b/Configuration/Services.yaml index 12f1d652d..f40ccbbc3 100644 --- a/Configuration/Services.yaml +++ b/Configuration/Services.yaml @@ -20,6 +20,9 @@ services: FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy: public: true + FluidTYPO3\Vhs\Proxy\FileRepositoryProxy: + public: true + FluidTYPO3\Vhs\Service\AssetService: public: true diff --git a/Tests/Unit/ViewHelpers/Condition/Form/HasValidatorViewHelperTest.php b/Tests/Unit/ViewHelpers/Condition/Form/HasValidatorViewHelperTest.php index a62c918e6..7090e48e1 100644 --- a/Tests/Unit/ViewHelpers/Condition/Form/HasValidatorViewHelperTest.php +++ b/Tests/Unit/ViewHelpers/Condition/Form/HasValidatorViewHelperTest.php @@ -8,12 +8,12 @@ * LICENSE.md file that was distributed with this source code. */ +use FluidTYPO3\Vhs\Proxy\FileRepositoryProxy; use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy; use FluidTYPO3\Vhs\Tests\Fixtures\Domain\Model\Bar; use FluidTYPO3\Vhs\Tests\Fixtures\Domain\Model\Foo; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase; -use TYPO3\CMS\Core\Resource\FileRepository; use TYPO3\CMS\Extbase\Reflection\ReflectionService; class HasValidatorViewHelperTest extends AbstractViewHelperTestCase @@ -22,7 +22,7 @@ class HasValidatorViewHelperTest extends AbstractViewHelperTestCase protected function setUp(): void { $this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock(); - $this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock(); + $this->singletonInstances[FileRepositoryProxy::class] = $this->getMockBuilder(FileRepositoryProxy::class)->disableOriginalConstructor()->getMock(); $this->singletonInstances[ReflectionService::class] = $this->getMockBuilder(ReflectionService::class) ->setMethods(['__destruct']) ->disableOriginalConstructor() diff --git a/Tests/Unit/ViewHelpers/Content/Resources/FalViewHelperTest.php b/Tests/Unit/ViewHelpers/Content/Resources/FalViewHelperTest.php index 552b6ed39..d4a50a10a 100644 --- a/Tests/Unit/ViewHelpers/Content/Resources/FalViewHelperTest.php +++ b/Tests/Unit/ViewHelpers/Content/Resources/FalViewHelperTest.php @@ -8,10 +8,10 @@ * LICENSE.md file that was distributed with this source code. */ +use FluidTYPO3\Vhs\Proxy\FileRepositoryProxy; use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase; -use TYPO3\CMS\Core\Resource\FileRepository; /** * Class FalViewHelperTest @@ -21,7 +21,7 @@ class FalViewHelperTest extends AbstractViewHelperTestCase protected function setUp(): void { $this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock(); - $this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock(); + $this->singletonInstances[FileRepositoryProxy::class] = $this->getMockBuilder(FileRepositoryProxy::class)->disableOriginalConstructor()->getMock(); parent::setUp(); } diff --git a/Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php b/Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php index 7c665ba49..3cf17eb31 100644 --- a/Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php +++ b/Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php @@ -8,10 +8,10 @@ * LICENSE.md file that was distributed with this source code. */ +use FluidTYPO3\Vhs\Proxy\FileRepositoryProxy; use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase; -use TYPO3\CMS\Core\Resource\FileRepository; /** * Class FalViewHelperTest @@ -21,7 +21,7 @@ class FalViewHelperTest extends AbstractViewHelperTestCase protected function setUp(): void { $this->singletonInstances[ResourceFactoryProxy::class] = $this->getMockBuilder(ResourceFactoryProxy::class)->disableOriginalConstructor()->getMock(); - $this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class)->disableOriginalConstructor()->getMock(); + $this->singletonInstances[FileRepositoryProxy::class] = $this->getMockBuilder(FileRepositoryProxy::class)->disableOriginalConstructor()->getMock(); parent::setUp(); } diff --git a/Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php b/Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php index 029e03a91..851efcf14 100644 --- a/Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php +++ b/Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php @@ -8,6 +8,7 @@ * LICENSE.md file that was distributed with this source code. */ +use FluidTYPO3\Vhs\Proxy\FileRepositoryProxy; use FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy; use FluidTYPO3\Vhs\Tests\Fixtures\Classes\DummyQueryBuilder; use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTest; @@ -15,7 +16,6 @@ use FluidTYPO3\Vhs\ViewHelpers\Resource\Record\FalViewHelper; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FileReference; -use TYPO3\CMS\Core\Resource\FileRepository; use TYPO3\CMS\Core\Resource\ResourceStorage; class FalViewHelperTest extends AbstractViewHelperTestCase @@ -26,7 +26,7 @@ protected function setUp(): void ->setMethods(['getFileReferenceObject']) ->disableOriginalConstructor() ->getMock(); - $this->singletonInstances[FileRepository::class] = $this->getMockBuilder(FileRepository::class) + $this->singletonInstances[FileRepositoryProxy::class] = $this->getMockBuilder(FileRepositoryProxy::class) ->setMethods(['findByRelation']) ->disableOriginalConstructor() ->getMock(); @@ -71,7 +71,7 @@ public function testGetResource(): void public function testGetResourcesWhenPageContext(): void { - $this->singletonInstances[FileRepository::class]->method('findByRelation')->willReturn([]); + $this->singletonInstances[FileRepositoryProxy::class]->method('findByRelation')->willReturn([]); $GLOBALS['TSFE'] = (object) ['sys_page' => 'foobar']; diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 27a618a75..1a32c857a 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -1,5 +1,9 @@ parameters: ignoreErrors: + - + message: "#^Method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\FileRepository\\:\\:findByRelation\\(\\) invoked with 4 parameters, 3 required\\.$#" + count: 1 + path: Classes/Proxy/FileRepositoryProxy.php - message: "#^Parameter \\#2 \\$response of method FluidTYPO3\\\\Vhs\\\\Proxy\\\\DispatcherProxy\\:\\:dispatch\\(\\) expects TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\Response\\|null, \\(TYPO3\\\\CMS\\\\Core\\\\Http\\\\Response\\&TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\Web\\\\Response\\)\\|\\(TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\ResponseInterface\\&TYPO3\\\\CMS\\\\Extbase\\\\Mvc\\\\Web\\\\Response\\)\\|null given\\.$#" count: 1