Skip to content

Commit

Permalink
[TASK] Introduce a proxy for FileRepository
Browse files Browse the repository at this point in the history
  • Loading branch information
NamelessCoder committed Jan 28, 2025
1 parent 1b12798 commit 4e0cd50
Show file tree
Hide file tree
Showing 8 changed files with 40 additions and 12 deletions.
20 changes: 20 additions & 0 deletions Classes/Proxy/FileRepositoryProxy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php
namespace FluidTYPO3\Vhs\Proxy;

use TYPO3\CMS\Core\Resource\FileRepository;
use TYPO3\CMS\Core\SingletonInterface;

class FileRepositoryProxy implements SingletonInterface
{
private FileRepository $fileRepository;

public function __construct(FileRepository $fileRepository)
{
$this->fileRepository = $fileRepository;
}

public function findByRelation(string $tableName, string $fieldName, int $uid, ?int $workspaceId = null): array
{
return $this->fileRepository->findByRelation($tableName, $fieldName, $uid, $workspaceId);
}
}
7 changes: 4 additions & 3 deletions Classes/ViewHelpers/Resource/Record/FalViewHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -55,7 +56,7 @@ class FalViewHelper extends AbstractRecordResourceViewHelper
protected $resourceFactory;

/**
* @var FileRepository
* @var FileRepositoryProxy
*/
protected $fileRepository;

Expand All @@ -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;
}

Expand Down
3 changes: 3 additions & 0 deletions Configuration/Services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ services:
FluidTYPO3\Vhs\Proxy\ResourceFactoryProxy:
public: true

FluidTYPO3\Vhs\Proxy\FileRepositoryProxy:
public: true

FluidTYPO3\Vhs\Service\AssetService:
public: true

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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();
}
Expand Down
4 changes: 2 additions & 2 deletions Tests/Unit/ViewHelpers/Page/Resources/FalViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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();
}
Expand Down
6 changes: 3 additions & 3 deletions Tests/Unit/ViewHelpers/Resource/Record/FalViewHelperTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
* 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;
use FluidTYPO3\Vhs\Tests\Unit\ViewHelpers\AbstractViewHelperTestCase;
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
Expand All @@ -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();
Expand Down Expand Up @@ -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'];

Expand Down
4 changes: 4 additions & 0 deletions phpstan-baseline.neon
Original file line number Diff line number Diff line change
@@ -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
Expand Down

0 comments on commit 4e0cd50

Please sign in to comment.