From caa47ce26bc27cce766b034b31a38b5de8168e16 Mon Sep 17 00:00:00 2001 From: Torben Hansen <derhansen@gmail.com> Date: Sat, 19 Nov 2022 18:50:15 +0100 Subject: [PATCH] [TASK] Replace prophecy in EXT:core/Tests/Unit/Page/* MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves: #98788 Resolves: #98789 Resolves: #98790 Releases: main Change-Id: I640479f791f17be349a45e63a0e8e38f1ffb6edf Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76710 Reviewed-by: Nikita Hovratov <nikita.h@live.de> Tested-by: core-ci <typo3@b13.com> Tested-by: Nikita Hovratov <nikita.h@live.de> Tested-by: Stefan Bürk <stefan@buerk.tech> Reviewed-by: Stefan Bürk <stefan@buerk.tech> --- .../core/Tests/Unit/Page/ImportMapTest.php | 86 +++++++++---------- .../Unit/Page/PageRendererFactoryTrait.php | 17 ++-- .../core/Tests/Unit/Page/PageRendererTest.php | 13 ++- 3 files changed, 54 insertions(+), 62 deletions(-) diff --git a/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php b/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php index c6f86737ef0d..9ae614281407 100644 --- a/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/ImportMapTest.php @@ -17,8 +17,6 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; -use Prophecy\Argument; -use Prophecy\PhpUnit\ProphecyTrait; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Package\MetaData; use TYPO3\CMS\Core\Package\PackageInterface; @@ -29,14 +27,39 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; class ImportMapTest extends UnitTestCase { - use ProphecyTrait; - protected array $packages = []; protected bool $backupEnvironment = true; protected ?PackageManager $backupPackageManager = null; + protected function setUp(): void + { + parent::setUp(); + + Environment::initialize( + Environment::getContext(), + Environment::isCli(), + Environment::isComposerMode(), + Environment::getProjectPath(), + __DIR__, + Environment::getVarPath(), + Environment::getConfigPath(), + Environment::getCurrentScript(), + Environment::isWindows() ? 'WINDOWS' : 'UNIX' + ); + $this->backupPackageManager = \Closure::bind(fn (): PackageManager => ExtensionManagementUtility::$packageManager, null, ExtensionManagementUtility::class)(); + ExtensionManagementUtility::setPackageManager($this->mockPackageManager()); + } + + protected function tearDown(): void + { + ExtensionManagementUtility::setPackageManager($this->backupPackageManager); + $this->backupPackageManager = null; + $this->packages = []; + parent::tearDown(); + } + /** * @test */ @@ -92,7 +115,7 @@ class ImportMapTest extends UnitTestCase self::assertStringStartsWith('Fixtures/ImportMap/core/Resources/Public/JavaScript/Contrib/lit/index.js?bust=', $url); self::assertStringContainsString('"lit/":"/Fixtures/ImportMap/core/Resources/Public/JavaScript/Contrib/lit/"', $output); self::assertStringContainsString('"@typo3/core/Module1.js":"/Fixtures/ImportMap/core/Resources/Public/JavaScript/Module1.js?bust=', $output); - ExtensionManagementUtility::setPackageManager($this->prophesize(PackageManager::class)->reveal()); + ExtensionManagementUtility::setPackageManager($this->createMock(PackageManager::class)); } /** @@ -123,7 +146,7 @@ class ImportMapTest extends UnitTestCase self::assertStringContainsString('"@typo3/core/":"/Fixtures/ImportMap/core/Resources/Public/JavaScript/', $output); self::assertStringContainsString('"@typo3/core/Module1.js":"/Fixtures/ImportMap/core/Resources/Public/JavaScript/Module1.js?bust=', $output); - ExtensionManagementUtility::setPackageManager($this->prophesize(PackageManager::class)->reveal()); + ExtensionManagementUtility::setPackageManager($this->createMock(PackageManager::class)); } /** @@ -196,13 +219,13 @@ class ImportMapTest extends UnitTestCase { $packageInstances = []; foreach ($this->packages as $key) { - $packageProphecy = $this->prophesize(PackageInterface::class); - $packageProphecy->getPackagePath()->willReturn(__DIR__ . '/Fixtures/ImportMap/' . $key . '/'); - $packageProphecy->getPackageKey()->willReturn($key); - $packageMetadataProphecy = $this->prophesize(MetaData::class); - $packageMetadataProphecy->getVersion()->willReturn('1.0.0'); - $packageProphecy->getPackageMetadata()->willReturn($packageMetadataProphecy->reveal()); - $packageInstances[$key] = $packageProphecy->reveal(); + $packageMock = $this->createMock(PackageInterface::class); + $packageMock->method('getPackagePath')->willReturn(__DIR__ . '/Fixtures/ImportMap/' . $key . '/'); + $packageMock->method('getPackageKey')->willReturn($key); + $packageMetadataMock = $this->createMock(MetaData::class); + $packageMetadataMock->method('getVersion')->willReturn('1.0.0'); + $packageMock->method('getPackageMetadata')->willReturn($packageMetadataMock); + $packageInstances[$key] = $packageMock; } return $packageInstances; @@ -211,41 +234,14 @@ class ImportMapTest extends UnitTestCase protected function mockPackageManager(): PackageManager { $test = $this; - $packageManagerProphecy = $this->prophesize(PackageManager::class); - $packageManagerProphecy->resolvePackagePath(Argument::type('string'))->will( - fn (array $args): string => str_replace( + $packageManagerMock = $this->createMock(PackageManager::class); + $packageManagerMock->method('resolvePackagePath')->with(self::isType('string'))->willReturnCallback( + fn (string $args): string => str_replace( array_map(fn (PackageInterface $package): string => 'EXT:' . $package->getPackageKey() . '/', $test->getPackages()), array_map(fn (PackageInterface $package): string => $package->getPackagePath(), $test->getPackages()), - $args[0] + $args ) ); - return $packageManagerProphecy->reveal(); - } - - protected function setUp(): void - { - parent::setUp(); - - Environment::initialize( - Environment::getContext(), - Environment::isCli(), - Environment::isComposerMode(), - Environment::getProjectPath(), - __DIR__, - Environment::getVarPath(), - Environment::getConfigPath(), - Environment::getCurrentScript(), - Environment::isWindows() ? 'WINDOWS' : 'UNIX' - ); - $this->backupPackageManager = \Closure::bind(fn (): PackageManager => ExtensionManagementUtility::$packageManager, null, ExtensionManagementUtility::class)(); - ExtensionManagementUtility::setPackageManager($this->mockPackageManager()); - } - - protected function tearDown(): void - { - ExtensionManagementUtility::setPackageManager($this->backupPackageManager); - $this->backupPackageManager = null; - $this->packages = []; - parent::tearDown(); + return $packageManagerMock; } } diff --git a/typo3/sysext/core/Tests/Unit/Page/PageRendererFactoryTrait.php b/typo3/sysext/core/Tests/Unit/Page/PageRendererFactoryTrait.php index de1d8c756f13..c03160b20d2a 100644 --- a/typo3/sysext/core/Tests/Unit/Page/PageRendererFactoryTrait.php +++ b/typo3/sysext/core/Tests/Unit/Page/PageRendererFactoryTrait.php @@ -17,15 +17,14 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; -use Prophecy\PhpUnit\ProphecyTrait; use Psr\Container\ContainerInterface; use Psr\EventDispatcher\EventDispatcherInterface; -use Psr\Http\Message\ResponseFactoryInterface; -use Psr\Http\Message\StreamFactoryInterface; use TYPO3\CMS\Core\Cache\CacheManager; use TYPO3\CMS\Core\Cache\Frontend\NullFrontend; use TYPO3\CMS\Core\EventDispatcher\EventDispatcher; use TYPO3\CMS\Core\EventDispatcher\ListenerProvider; +use TYPO3\CMS\Core\Http\ResponseFactory; +use TYPO3\CMS\Core\Http\StreamFactory; use TYPO3\CMS\Core\Localization\LanguageStore; use TYPO3\CMS\Core\Localization\Locales; use TYPO3\CMS\Core\Localization\LocalizationFactory; @@ -38,17 +37,17 @@ use TYPO3\CMS\Core\Service\DependencyOrderingService; use TYPO3\CMS\Core\Service\MarkerBasedTemplateService; use TYPO3\CMS\Core\Utility\GeneralUtility; +/** + * @internal Only for core internal testing. + */ trait PageRendererFactoryTrait { - use ProphecyTrait; - protected function getPageRendererConstructorArgs( PackageManager $packageManager = null, CacheManager $cacheManager = null, ): array { $packageManager ??= new PackageManager(new DependencyOrderingService()); - $cacheManagerProphecy = $this->prophesize(CacheManager::class); - $cacheManager ??= $cacheManagerProphecy->reveal(); + $cacheManager ??= $this->createMock(CacheManager::class); /** * prepare an EventDispatcher for ::makeInstance(AssetRenderer) @@ -76,8 +75,8 @@ trait PageRendererFactoryTrait new ResourceCompressor(), new RelativeCssPathFixer(), new LocalizationFactory(new LanguageStore($packageManager), $cacheManager), - $this->prophesize(ResponseFactoryInterface::class)->reveal(), - $this->prophesize(StreamFactoryInterface::class)->reveal(), + new ResponseFactory(), + new StreamFactory(), ]; } } diff --git a/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php b/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php index cd0070fb5bb2..56c1eac686cc 100644 --- a/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php +++ b/typo3/sysext/core/Tests/Unit/Page/PageRendererTest.php @@ -17,8 +17,6 @@ declare(strict_types=1); namespace TYPO3\CMS\Core\Tests\Unit\Page; -use Prophecy\Argument; -use Prophecy\PhpUnit\ProphecyTrait; use TYPO3\CMS\Core\Page\ImportMap; use TYPO3\CMS\Core\Page\ImportMapFactory; use TYPO3\CMS\Core\Page\PageRenderer; @@ -28,7 +26,6 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase; class PageRendererTest extends UnitTestCase { - use ProphecyTrait; use PageRendererFactoryTrait; protected bool $resetSingletonInstances = true; @@ -36,11 +33,11 @@ class PageRendererTest extends UnitTestCase protected function setUp(): void { parent::setUp(); - $importMapProphecy = $this->prophesize(ImportMap::class); - $importMapProphecy->render(Argument::type('string'), Argument::type('string'))->willReturn(''); - $importMapFactoryProphecy = $this->prophesize(ImportMapFactory::class); - $importMapFactoryProphecy->create()->willReturn($importMapProphecy->reveal()); - GeneralUtility::setSingletonInstance(ImportMapFactory::class, $importMapFactoryProphecy->reveal()); + $importMapMock = $this->createMock(ImportMap::class); + $importMapMock->method('render')->with(self::isType('string'), self::isType('string'))->willReturn(''); + $importMapFactoryMock = $this->createMock(ImportMapFactory::class); + $importMapFactoryMock->method('create')->willReturn($importMapMock); + GeneralUtility::setSingletonInstance(ImportMapFactory::class, $importMapFactoryMock); } /** -- GitLab