From 9bdfcfd262a9654f5f57299ed156a4f228ad6ef2 Mon Sep 17 00:00:00 2001 From: Oliver Klee <typo3-coding@oliverklee.de> Date: Wed, 9 Aug 2023 12:20:18 +0200 Subject: [PATCH] [TASK] Replace usages of getMockForAbstractClass in EXT:core `getMockForAbstractClass` has been (soft-)deprecated in PHPUnit 10.1: https://github.com/sebastianbergmann/phpunit/issues/5241 Hence, we should replace its usages to follow best practices and avoid deprecation warnings later with PHPUnit 11. We do this by creating dedicated fixture subclasses of the affected abstract classes. Resolves: #101630 Related: #101601 Releases: main Change-Id: I27f526cb7ee4e1f2081c05befd3d70549dd0e2fd Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/80470 Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by: Andreas Nedbal <andy@pixelde.su> Reviewed-by: Lina Wolf <112@linawolf.de> Tested-by: core-ci <typo3@b13.com> Tested-by: Lina Wolf <112@linawolf.de> Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by: Andreas Nedbal <andy@pixelde.su> --- Build/phpstan/phpstan-baseline.neon | 2 +- .../Processor/AbstractMemoryProcessorTest.php | 6 +- .../Fixtures/TestingMemoryProcessor.php | 32 ++ .../Tests/Unit/Resource/AbstractFileTest.php | 4 +- .../Collection/FileCollectionRegistryTest.php | 16 +- .../Fixtures/TestingFileCollection.php | 31 ++ .../Resource/Driver/AbstractDriverTest.php | 4 +- .../Resource/Driver/DriverRegistryTest.php | 3 +- .../Driver/Fixtures/TestingDriver.php | 281 ++++++++++++++++++ .../Unit/Resource/Fixtures/TestingFile.php | 41 +++ .../Repository/AbstractRepositoryTest.php | 24 +- .../Repository/Fixtures/TestingRepository.php | 36 +++ .../Unit/Utility/RootlineUtilityTest.php | 12 +- 13 files changed, 443 insertions(+), 49 deletions(-) create mode 100644 typo3/sysext/core/Tests/Unit/Log/Processor/Fixtures/TestingMemoryProcessor.php create mode 100644 typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/TestingFileCollection.php create mode 100644 typo3/sysext/core/Tests/Unit/Resource/Driver/Fixtures/TestingDriver.php create mode 100644 typo3/sysext/core/Tests/Unit/Resource/Fixtures/TestingFile.php create mode 100644 typo3/sysext/core/Tests/Unit/Resource/Repository/Fixtures/TestingRepository.php diff --git a/Build/phpstan/phpstan-baseline.neon b/Build/phpstan/phpstan-baseline.neon index 84c55119e85e..b86feb330db7 100644 --- a/Build/phpstan/phpstan-baseline.neon +++ b/Build/phpstan/phpstan-baseline.neon @@ -1307,7 +1307,7 @@ parameters: - message: "#^Parameter \\#1 \\$uid of method TYPO3\\\\CMS\\\\Core\\\\Resource\\\\AbstractRepository\\<object\\>\\:\\:findByUid\\(\\) expects int, string given\\.$#" - count: 2 + count: 1 path: ../../typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php - diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php index 178b2292d500..5f5f61e6e0d7 100644 --- a/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/AbstractMemoryProcessorTest.php @@ -17,7 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor; -use TYPO3\CMS\Core\Log\Processor\AbstractMemoryProcessor; +use TYPO3\CMS\Core\Tests\Unit\Log\Processor\Fixtures\TestingMemoryProcessor; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractMemoryProcessorTest extends UnitTestCase @@ -27,7 +27,7 @@ final class AbstractMemoryProcessorTest extends UnitTestCase */ public function setRealMemoryUsageSetsRealMemoryUsage(): void { - $processor = $this->getMockForAbstractClass(AbstractMemoryProcessor::class); + $processor = new TestingMemoryProcessor(); $processor->setRealMemoryUsage(false); self::assertFalse($processor->getRealMemoryUsage()); } @@ -37,7 +37,7 @@ final class AbstractMemoryProcessorTest extends UnitTestCase */ public function setFormatSizeSetsFormatSize(): void { - $processor = $this->getMockForAbstractClass(AbstractMemoryProcessor::class); + $processor = new TestingMemoryProcessor(); $processor->setFormatSize(false); self::assertFalse($processor->getFormatSize()); } diff --git a/typo3/sysext/core/Tests/Unit/Log/Processor/Fixtures/TestingMemoryProcessor.php b/typo3/sysext/core/Tests/Unit/Log/Processor/Fixtures/TestingMemoryProcessor.php new file mode 100644 index 000000000000..0bc37c0b4fa6 --- /dev/null +++ b/typo3/sysext/core/Tests/Unit/Log/Processor/Fixtures/TestingMemoryProcessor.php @@ -0,0 +1,32 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Core\Tests\Unit\Log\Processor\Fixtures; + +use TYPO3\CMS\Core\Log\LogRecord; +use TYPO3\CMS\Core\Log\Processor\AbstractMemoryProcessor; + +/** + * Testing subclass of `AbstractMemoryProcessor`. + */ +final class TestingMemoryProcessor extends AbstractMemoryProcessor +{ + public function processLogRecord(LogRecord $logRecord): LogRecord + { + throw new \BadMethodCallException('Not implemented', 1691578434); + } +} diff --git a/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php b/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php index c46dbe82e5c3..c2e499cf1423 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/AbstractFileTest.php @@ -17,10 +17,10 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource; -use TYPO3\CMS\Core\Resource\AbstractFile; use TYPO3\CMS\Core\Resource\File; use TYPO3\CMS\Core\Resource\FolderInterface; use TYPO3\CMS\Core\Resource\ResourceStorage; +use TYPO3\CMS\Core\Tests\Unit\Resource\Fixtures\TestingFile; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; /** @@ -48,7 +48,7 @@ final class AbstractFileTest extends UnitTestCase $mockedStorage->expects(self::once())->method('getFolderIdentifierFromFileIdentifier')->with($currentIdentifier)->willReturn($parentIdentifier); $mockedStorage->expects(self::once())->method('getFolder')->with($parentIdentifier)->willReturn($parentFolderFixture); - $currentFolderFixture = $this->getMockForAbstractClass(AbstractFile::class); + $currentFolderFixture = new TestingFile(); $currentFolderFixture->setIdentifier($currentIdentifier)->setStorage($mockedStorage); self::assertSame($parentFolderFixture, $currentFolderFixture->getParentFolder()); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php index 7075686e5ccd..2b5739c728bf 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Collection/FileCollectionRegistryTest.php @@ -17,9 +17,9 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Collection; -use TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection; use TYPO3\CMS\Core\Resource\Collection\FileCollectionRegistry; use TYPO3\CMS\Core\Resource\Collection\StaticFileCollection; +use TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures\TestingFileCollection; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -30,7 +30,7 @@ final class FileCollectionRegistryTest extends UnitTestCase */ public function registeredFileCollectionClassesCanBeRetrieved(): void { - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $subject = new FileCollectionRegistry(); $subject->registerFileCollectionClass($className, 'foobar'); $returnedClassName = $subject->getFileCollectionClass('foobar'); @@ -56,7 +56,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $this->expectException(\InvalidArgumentException::class); $this->expectExceptionCode(1391295611); $subject = new FileCollectionRegistry(); - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $type = str_pad('', 40); $subject->registerFileCollectionClass($className, $type); } @@ -69,7 +69,7 @@ final class FileCollectionRegistryTest extends UnitTestCase $this->expectException(\InvalidArgumentException::class); $this->expectExceptionCode(1391295643); $subject = new FileCollectionRegistry(); - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $className2 = get_class($this->getMockForAbstractClass(StaticFileCollection::class)); $subject->registerFileCollectionClass($className, 'foobar'); $subject->registerFileCollectionClass($className2, 'foobar'); @@ -80,7 +80,7 @@ final class FileCollectionRegistryTest extends UnitTestCase */ public function registerFileCollectionClassOverridesExistingRegisteredFileCollectionClass(): void { - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $className2 = get_class($this->getMockForAbstractClass(StaticFileCollection::class)); $subject = new FileCollectionRegistry(); $subject->registerFileCollectionClass($className, 'foobar'); @@ -103,7 +103,7 @@ final class FileCollectionRegistryTest extends UnitTestCase */ public function getFileCollectionClassAcceptsClassNameIfClassIsRegistered(): void { - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $subject = new FileCollectionRegistry(); $subject->registerFileCollectionClass($className, 'foobar'); self::assertEquals($className, $subject->getFileCollectionClass('foobar')); @@ -114,7 +114,7 @@ final class FileCollectionRegistryTest extends UnitTestCase */ public function fileCollectionRegistryIsInitializedWithPreconfiguredFileCollections(): void { - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $type = substr(StringUtility::getUniqueId('type_'), 0, 30); $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredCollections'] = [ $type => $className, @@ -128,7 +128,7 @@ final class FileCollectionRegistryTest extends UnitTestCase */ public function fileCollectionExistsReturnsTrueForAllExistingFileCollections(): void { - $className = get_class($this->getMockForAbstractClass(AbstractFileCollection::class)); + $className = TestingFileCollection::class; $type = 'foo'; $GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredCollections'] = [ $type => $className, diff --git a/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/TestingFileCollection.php b/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/TestingFileCollection.php new file mode 100644 index 000000000000..2ac7ddef960a --- /dev/null +++ b/typo3/sysext/core/Tests/Unit/Resource/Collection/Fixtures/TestingFileCollection.php @@ -0,0 +1,31 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Core\Tests\Unit\Resource\Collection\Fixtures; + +use TYPO3\CMS\Core\Resource\Collection\AbstractFileCollection; + +/** + * Testing subclass of `AbstractFileCollection`. + */ +final class TestingFileCollection extends AbstractFileCollection +{ + public function loadContents(): void + { + // stub + } +} diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php index 0a8a1508941c..f4125bb46218 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/AbstractDriverTest.php @@ -17,7 +17,7 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver; -use TYPO3\CMS\Core\Resource\Driver\AbstractDriver; +use TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures\TestingDriver; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; final class AbstractDriverTest extends UnitTestCase @@ -27,7 +27,7 @@ final class AbstractDriverTest extends UnitTestCase */ public function isCaseSensitiveFileSystemReturnsTrueIfNothingIsConfigured(): void { - $subject = $this->getMockForAbstractClass(AbstractDriver::class, [], '', false); + $subject = new TestingDriver(); self::assertTrue($subject->isCaseSensitiveFileSystem()); } } diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php index 33bd8d0d932d..582b4c43fd65 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/DriverRegistryTest.php @@ -19,6 +19,7 @@ namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver; use TYPO3\CMS\Core\Resource\Driver\DriverInterface; use TYPO3\CMS\Core\Resource\Driver\DriverRegistry; +use TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures\TestingDriver; use TYPO3\CMS\Core\Utility\StringUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -55,7 +56,7 @@ final class DriverRegistryTest extends UnitTestCase $this->expectException(\InvalidArgumentException::class); $this->expectExceptionCode(1314979451); $className = get_class($this->createMock(DriverInterface::class)); - $className2 = get_class($this->getMockForAbstractClass(DriverInterface::class)); + $className2 = TestingDriver::class; $subject = new DriverRegistry(); $subject->registerDriverClass($className, 'foobar'); $subject->registerDriverClass($className2, 'foobar'); diff --git a/typo3/sysext/core/Tests/Unit/Resource/Driver/Fixtures/TestingDriver.php b/typo3/sysext/core/Tests/Unit/Resource/Driver/Fixtures/TestingDriver.php new file mode 100644 index 000000000000..18997fe1d978 --- /dev/null +++ b/typo3/sysext/core/Tests/Unit/Resource/Driver/Fixtures/TestingDriver.php @@ -0,0 +1,281 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Core\Tests\Unit\Resource\Driver\Fixtures; + +use TYPO3\CMS\Core\Resource\Capabilities; +use TYPO3\CMS\Core\Resource\Driver\AbstractDriver; + +/** + * Testing subclass of `AbstractDriver`. + */ +final class TestingDriver extends AbstractDriver +{ + protected function canonicalizeAndCheckFilePath(string $filePath): string + { + throw new \BadMethodCallException('Not implemented', 1691577284); + } + + protected function canonicalizeAndCheckFileIdentifier(string $fileIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577288); + } + + protected function canonicalizeAndCheckFolderIdentifier(string $folderIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577293); + } + + public function processConfiguration(): void + { + // stub + } + + public function initialize(): void + { + // stub + } + + public function mergeConfigurationCapabilities(Capabilities $capabilities): Capabilities + { + throw new \BadMethodCallException('Not implemented', 1691577300); + } + + public function sanitizeFileName(string $fileName, string $charset = ''): string + { + throw new \BadMethodCallException('Not implemented', 1691577304); + } + + public function getRootLevelFolder(): string + { + throw new \BadMethodCallException('Not implemented', 1691577309); + } + + public function getDefaultFolder(): string + { + throw new \BadMethodCallException('Not implemented', 1691577316); + } + + public function getParentFolderIdentifierOfIdentifier(string $fileIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577324); + } + + public function getPublicUrl(string $identifier): ?string + { + throw new \BadMethodCallException('Not implemented', 1691577328); + } + + public function createFolder( + string $newFolderName, + string $parentFolderIdentifier = '', + bool $recursive = false + ): string { + throw new \BadMethodCallException('Not implemented', 1691577334); + } + + public function renameFolder(string $folderIdentifier, string $newName): array + { + throw new \BadMethodCallException('Not implemented', 1691577338); + } + + public function deleteFolder(string $folderIdentifier, bool $deleteRecursively = false): bool + { + throw new \BadMethodCallException('Not implemented', 1691577342); + } + + public function fileExists(string $fileIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577347); + } + + public function folderExists(string $folderIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577350); + } + + public function isFolderEmpty(string $folderIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577354); + } + + public function addFile( + string $localFilePath, + string $targetFolderIdentifier, + string $newFileName = '', + bool $removeOriginal = true + ): string { + throw new \BadMethodCallException('Not implemented', 1691577360); + } + + public function createFile(string $fileName, string $parentFolderIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577364); + } + + public function copyFileWithinStorage( + string $fileIdentifier, + string $targetFolderIdentifier, + string $fileName + ): string { + throw new \BadMethodCallException('Not implemented', 1691577369); + } + + public function renameFile(string $fileIdentifier, string $newName): string + { + throw new \BadMethodCallException('Not implemented', 1691577375); + } + + public function replaceFile(string $fileIdentifier, string $localFilePath): bool + { + throw new \BadMethodCallException('Not implemented', 1691577379); + } + + public function deleteFile(string $fileIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577384); + } + + public function hash(string $fileIdentifier, string $hashAlgorithm): string + { + throw new \BadMethodCallException('Not implemented', 1691577388); + } + + public function moveFileWithinStorage( + string $fileIdentifier, + string $targetFolderIdentifier, + string $newFileName + ): string { + throw new \BadMethodCallException('Not implemented', 1691577393); + } + + public function moveFolderWithinStorage( + string $sourceFolderIdentifier, + string $targetFolderIdentifier, + string $newFolderName + ): array { + throw new \BadMethodCallException('Not implemented', 1691577398); + } + + public function copyFolderWithinStorage( + string $sourceFolderIdentifier, + string $targetFolderIdentifier, + string $newFolderName + ): bool { + throw new \BadMethodCallException('Not implemented', 1691577402); + } + + public function getFileContents(string $fileIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577406); + } + + public function setFileContents(string $fileIdentifier, string $contents): int + { + throw new \BadMethodCallException('Not implemented', 1691577411); + } + + public function fileExistsInFolder(string $fileName, string $folderIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577414); + } + + public function folderExistsInFolder(string $folderName, string $folderIdentifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577418); + } + + public function getFileForLocalProcessing(string $fileIdentifier, bool $writable = true): string + { + throw new \BadMethodCallException('Not implemented', 1691577423); + } + + public function getPermissions(string $identifier): array + { + throw new \BadMethodCallException('Not implemented', 1691577427); + } + + public function dumpFileContents(string $identifier): void + { + // stub + } + + public function isWithin(string $folderIdentifier, string $identifier): bool + { + throw new \BadMethodCallException('Not implemented', 1691577435); + } + + public function getFileInfoByIdentifier(string $fileIdentifier, array $propertiesToExtract = []): array + { + throw new \BadMethodCallException('Not implemented', 1691577440); + } + + public function getFolderInfoByIdentifier(string $folderIdentifier): array + { + throw new \BadMethodCallException('Not implemented', 1691577444); + } + + public function getFileInFolder(string $fileName, string $folderIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577449); + } + + public function getFilesInFolder( + string $folderIdentifier, + int $start = 0, + int $numberOfItems = 0, + bool $recursive = false, + array $filenameFilterCallbacks = [], + string $sort = '', + bool $sortRev = false + ): array { + throw new \BadMethodCallException('Not implemented', 1691577453); + } + + public function getFolderInFolder(string $folderName, string $folderIdentifier): string + { + throw new \BadMethodCallException('Not implemented', 1691577457); + } + + public function getFoldersInFolder( + string $folderIdentifier, + int $start = 0, + int $numberOfItems = 0, + bool $recursive = false, + array $folderNameFilterCallbacks = [], + string $sort = '', + bool $sortRev = false + ): array { + throw new \BadMethodCallException('Not implemented', 1691577462); + } + + public function countFilesInFolder( + string $folderIdentifier, + bool $recursive = false, + array $filenameFilterCallbacks = [] + ): int { + throw new \BadMethodCallException('Not implemented', 1691577466); + } + + public function countFoldersInFolder( + string $folderIdentifier, + bool $recursive = false, + array $folderNameFilterCallbacks = [] + ): int { + throw new \BadMethodCallException('Not implemented', 1691577470); + } +} diff --git a/typo3/sysext/core/Tests/Unit/Resource/Fixtures/TestingFile.php b/typo3/sysext/core/Tests/Unit/Resource/Fixtures/TestingFile.php new file mode 100644 index 000000000000..e8e5930a7726 --- /dev/null +++ b/typo3/sysext/core/Tests/Unit/Resource/Fixtures/TestingFile.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Core\Tests\Unit\Resource\Fixtures; + +use TYPO3\CMS\Core\Resource\AbstractFile; + +/** + * Testing subclass of `AbstractFile`. + */ +final class TestingFile extends AbstractFile +{ + public function updateProperties(array $properties): void + { + // stub + } + + public function isIndexed(): bool + { + throw new \BadMethodCallException('Not implemented', 1691576988); + } + + public function toArray(): array + { + throw new \BadMethodCallException('Not implemented', 1691580005); + } +} diff --git a/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php b/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php index e102bb21f124..b13465377923 100644 --- a/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php +++ b/typo3/sysext/core/Tests/Unit/Resource/Repository/AbstractRepositoryTest.php @@ -17,13 +17,12 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Resource\Repository; -use Doctrine\DBAL\Result; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Database\Connection; use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Database\Query\Expression\ExpressionBuilder; use TYPO3\CMS\Core\Database\Query\QueryBuilder; -use TYPO3\CMS\Core\Resource\AbstractRepository; +use TYPO3\CMS\Core\Tests\Unit\Resource\Repository\Fixtures\TestingRepository; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; @@ -53,26 +52,7 @@ final class AbstractRepositoryTest extends UnitTestCase { $this->expectException(\InvalidArgumentException::class); $this->expectExceptionCode(1316779798); - $subject = $this->getMockForAbstractClass(AbstractRepository::class, [], '', false); + $subject = new TestingRepository(); $subject->findByUid('asdf'); } - - /** - * @test - */ - public function findByUidAcceptsNumericUidInString(): void - { - $statementMock = $this->createMock(Result::class); - $statementMock->expects(self::once())->method('fetchAssociative')->willReturn(['uid' => 123]); - - $queryBuilderMock = $this->createDatabaseMock(); - $queryBuilderMock->expects(self::once())->method('select')->with('*')->willReturn($queryBuilderMock); - $queryBuilderMock->expects(self::once())->method('from')->with('')->willReturn($queryBuilderMock); - $queryBuilderMock->expects(self::once())->method('where')->with(self::anything())->willReturn($queryBuilderMock); - $queryBuilderMock->method('createNamedParameter')->with(self::anything())->willReturnArgument(0); - $queryBuilderMock->expects(self::once())->method('executeQuery')->willReturn($statementMock); - - $subject = $this->getMockForAbstractClass(AbstractRepository::class, [], '', false); - $subject->findByUid('123'); - } } diff --git a/typo3/sysext/core/Tests/Unit/Resource/Repository/Fixtures/TestingRepository.php b/typo3/sysext/core/Tests/Unit/Resource/Repository/Fixtures/TestingRepository.php new file mode 100644 index 000000000000..362f96bf455b --- /dev/null +++ b/typo3/sysext/core/Tests/Unit/Resource/Repository/Fixtures/TestingRepository.php @@ -0,0 +1,36 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Core\Tests\Unit\Resource\Repository\Fixtures; + +use TYPO3\CMS\Core\Resource\AbstractRepository; + +/** + * Testing subclass of `AbstractRepository`. + */ +final class TestingRepository extends AbstractRepository +{ + public function __construct() + { + // Do not call parent constructor + } + + protected function createDomainObject(array $databaseRow): object + { + throw new \BadMethodCallException('Not implemented', 1691578354); + } +} diff --git a/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php b/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php index a83077d1df22..b265b71192c1 100644 --- a/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php +++ b/typo3/sysext/core/Tests/Unit/Utility/RootlineUtilityTest.php @@ -19,7 +19,6 @@ namespace TYPO3\CMS\Core\Tests\Unit\Utility; use PHPUnit\Framework\MockObject\MockObject; use TYPO3\CMS\Core\Cache\CacheManager; -use TYPO3\CMS\Core\Cache\Frontend\AbstractFrontend; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\Context\Context; use TYPO3\CMS\Core\Context\LanguageAspect; @@ -319,18 +318,11 @@ final class RootlineUtilityTest extends UnitTestCase public function getCacheIdentifierReturnsValidIdentifierWithCommasInMountPointParameter(): void { $this->subject->method('resolvePageId')->willReturn(42); - - $cacheFrontendMock = $this->getMockForAbstractClass( - AbstractFrontend::class, - [], - '', - false - ); + $cacheFrontend = new NullFrontend('some-frontend'); $context = new Context(); $context->setAspect('workspace', new WorkspaceAspect(15)); $context->setAspect('language', new LanguageAspect(8, 8, LanguageAspect::OVERLAYS_OFF)); - $this->subject->__construct(42, '47-11,48-12', $context); - self::assertTrue($cacheFrontendMock->isValidEntryIdentifier($this->subject->getCacheIdentifier())); + self::assertTrue($cacheFrontend->isValidEntryIdentifier($this->subject->getCacheIdentifier())); } } -- GitLab