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