From 688023868c3d6505149acfc864a750c3fede182f Mon Sep 17 00:00:00 2001
From: Torben Hansen <derhansen@gmail.com>
Date: Sat, 12 Nov 2022 12:06:30 +0100
Subject: [PATCH] [TASK] Replace prophecy in EXT:core/Tests/Unit/Mail/*

Resolves: #98809
Resolves: #98810
Resolves: #98811
Resolves: #98812
Releases: main
Change-Id: I043c797873be9df1ce1356fd4c3425bc0018673a
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/76567
Tested-by: core-ci <typo3@b13.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Andreas Fernandez <a.fernandez@scripting-base.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Andreas Fernandez <a.fernandez@scripting-base.de>
---
 .../Event/AfterMailerSentMessageEventTest.php | 10 ++----
 .../BeforeMailerSentMessageEventTest.php      | 10 ++----
 .../core/Tests/Unit/Mail/MailerTest.php       | 22 +++++-------
 .../Tests/Unit/Mail/TransportFactoryTest.php  | 36 ++++++++-----------
 4 files changed, 28 insertions(+), 50 deletions(-)

diff --git a/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php b/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php
index 542349f0a91a..e2e06e4d31cc 100644
--- a/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php
+++ b/typo3/sysext/core/Tests/Unit/Mail/Event/AfterMailerSentMessageEventTest.php
@@ -17,8 +17,6 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Unit\Mail\Event;
 
-use Prophecy\Argument;
-use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\Mailer\Transport\SendmailTransport;
 use TYPO3\CMS\Core\Mail\Event\AfterMailerSentMessageEvent;
 use TYPO3\CMS\Core\Mail\Mailer;
@@ -28,17 +26,15 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class AfterMailerSentMessageEventTest extends UnitTestCase
 {
-    use ProphecyTrait;
-
     protected bool $resetSingletonInstances = true;
 
     protected function setUp(): void
     {
         parent::setUp();
 
-        $transportFactory = $this->prophesize(TransportFactory::class);
-        $transportFactory->get(Argument::any())->willReturn($this->prophesize(SendmailTransport::class));
-        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory->reveal());
+        $transportFactory = $this->createMock(TransportFactory::class);
+        $transportFactory->method('get')->with(self::anything())->willReturn($this->createMock(SendmailTransport::class));
+        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory);
     }
 
     /**
diff --git a/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php b/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php
index a7af6d47fb0c..d64139c27773 100644
--- a/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php
+++ b/typo3/sysext/core/Tests/Unit/Mail/Event/BeforeMailerSentMessageEventTest.php
@@ -17,8 +17,6 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Unit\Mail\Event;
 
-use Prophecy\Argument;
-use Prophecy\PhpUnit\ProphecyTrait;
 use Symfony\Component\Mailer\Envelope;
 use Symfony\Component\Mailer\Transport\SendmailTransport;
 use Symfony\Component\Mime\Address;
@@ -31,17 +29,15 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class BeforeMailerSentMessageEventTest extends UnitTestCase
 {
-    use ProphecyTrait;
-
     protected bool $resetSingletonInstances = true;
 
     protected function setUp(): void
     {
         parent::setUp();
 
-        $transportFactory = $this->prophesize(TransportFactory::class);
-        $transportFactory->get(Argument::any())->willReturn($this->prophesize(SendmailTransport::class));
-        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory->reveal());
+        $transportFactory = $this->createMock(TransportFactory::class);
+        $transportFactory->method('get')->with(self::anything())->willReturn($this->createMock(SendmailTransport::class));
+        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory);
     }
 
     /**
diff --git a/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php b/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php
index 1653dc0a95de..b49cc7939c33 100644
--- a/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php
+++ b/typo3/sysext/core/Tests/Unit/Mail/MailerTest.php
@@ -17,8 +17,6 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Unit\Mail;
 
-use Prophecy\Argument;
-use Prophecy\PhpUnit\ProphecyTrait;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
 use Symfony\Component\Mailer\Transport\NullTransport;
@@ -36,8 +34,6 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class MailerTest extends UnitTestCase
 {
-    use ProphecyTrait;
-
     protected bool $resetSingletonInstances = true;
 
     protected $subject;
@@ -73,13 +69,12 @@ class MailerTest extends UnitTestCase
         $settings = ['transport' => 'mbox', 'transport_mbox_file' => '/path/to/file'];
         $GLOBALS['TYPO3_CONF_VARS']['MAIL'] = ['transport' => 'sendmail', 'transport_sendmail_command' => 'sendmail -bs'];
 
-        $transportFactory = $this->prophesize(TransportFactory::class);
-        $transportFactory->get(Argument::any())->willReturn($this->prophesize(SendmailTransport::class));
-        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory->reveal());
+        $transportFactory = $this->createMock(TransportFactory::class);
+        $transportFactory->expects(self::atLeastOnce())->method('get')->with($settings)
+            ->willReturn($this->createMock(SendmailTransport::class));
+        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory);
         $this->subject->injectMailSettings($settings);
         $this->subject->__construct();
-
-        $transportFactory->get($settings)->shouldHaveBeenCalled();
     }
 
     /**
@@ -89,13 +84,12 @@ class MailerTest extends UnitTestCase
     {
         $settings = ($GLOBALS['TYPO3_CONF_VARS']['MAIL'] = ['transport' => 'sendmail', 'transport_sendmail_command' => 'sendmail -bs']);
 
-        $transportFactory = $this->prophesize(TransportFactory::class);
-        $transportFactory->get(Argument::any())->willReturn($this->prophesize(SendmailTransport::class));
-        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory->reveal());
+        $transportFactory = $this->createMock(TransportFactory::class);
+        $transportFactory->expects(self::atLeastOnce())->method('get')->with($settings)
+            ->willReturn($this->createMock(SendmailTransport::class));
+        GeneralUtility::setSingletonInstance(TransportFactory::class, $transportFactory);
         $this->subject->injectMailSettings($settings);
         $this->subject->__construct();
-
-        $transportFactory->get($settings)->shouldHaveBeenCalled();
     }
 
     public static function wrongConfigurationProvider(): array
diff --git a/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php b/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php
index aa63d4935bb1..12442998063c 100644
--- a/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php
+++ b/typo3/sysext/core/Tests/Unit/Mail/TransportFactoryTest.php
@@ -17,9 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Unit\Mail;
 
-use Prophecy\Argument;
-use Prophecy\PhpUnit\ProphecyTrait;
-use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
 use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
 use Symfony\Component\Mailer\Transport\NullTransport;
 use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransport;
@@ -40,23 +38,18 @@ use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
 
 class TransportFactoryTest extends UnitTestCase
 {
-    use ProphecyTrait;
-
     protected bool $resetSingletonInstances = true;
 
     protected function getSubject(&$eventDispatcher): TransportFactory
     {
-        $eventDispatcher = $this->prophesize(EventDispatcherInterface::class);
-        $eventDispatcher->dispatch(Argument::any())->willReturn(Argument::any());
-
-        $logger = $this->prophesize(LoggerInterface::class);
+        $eventDispatcher = $this->createMock(EventDispatcherInterface::class);
+        $logger = new NullLogger();
 
-        $logManager = $this->prophesize(LogManagerInterface::class);
-        $logManager->getLogger(Argument::any())->willReturn($logger->reveal());
-        $logManager->getLogger()->willReturn($logger->reveal());
+        $logManager = $this->createMock(LogManagerInterface::class);
+        $logManager->method('getLogger')->willReturn($logger);
 
-        $transportFactory = new TransportFactory($eventDispatcher->reveal(), $logManager->reveal());
-        $transportFactory->setLogger($logger->reveal());
+        $transportFactory = new TransportFactory($eventDispatcher, $logManager);
+        $transportFactory->setLogger($logger);
 
         return $transportFactory;
     }
@@ -210,6 +203,8 @@ class TransportFactoryTest extends UnitTestCase
         ];
 
         $transport = $this->getSubject($eventDispatcher)->get($mailSettings);
+        $eventDispatcher->expects(self::once())->method('dispatch')->with(self::anything());
+
         $message = new MailMessage();
         $message->setTo(['foo@bar.com'])
             ->text('foo')
@@ -220,8 +215,6 @@ class TransportFactoryTest extends UnitTestCase
         } catch (TransportExceptionInterface $exception) {
             // connection is not valid in tests, so we just catch the exception here.
         }
-
-        $eventDispatcher->dispatch(Argument::any())->shouldHaveBeenCalledOnce();
     }
 
     /**
@@ -273,6 +266,7 @@ class TransportFactoryTest extends UnitTestCase
         ];
 
         $transport = $this->getSubject($eventDispatcher)->get($mailSettings);
+        $eventDispatcher->expects(self::once())->method('dispatch')->with(self::anything());
 
         $message = new MailMessage();
         $message->setTo(['foo@bar.com'])
@@ -284,8 +278,6 @@ class TransportFactoryTest extends UnitTestCase
         } catch (TransportExceptionInterface $exception) {
             // connection is not valid in tests, so we just catch the exception here.
         }
-
-        $eventDispatcher->dispatch(Argument::any())->shouldHaveBeenCalledOnce();
     }
 
     /**
@@ -310,6 +302,8 @@ class TransportFactoryTest extends UnitTestCase
         ];
 
         $transport = $this->getSubject($eventDispatcher)->get($mailSettings);
+        $eventDispatcher->expects(self::once())->method('dispatch')->with(self::anything());
+
         $message = new MailMessage();
         $message->setTo(['foo@bar.com'])
             ->text('foo')
@@ -320,8 +314,6 @@ class TransportFactoryTest extends UnitTestCase
         } catch (TransportExceptionInterface $exception) {
             // connection is not valid in tests, so we just catch the exception here.
         }
-
-        $eventDispatcher->dispatch(Argument::any())->shouldHaveBeenCalledOnce();
     }
 
     /**
@@ -346,14 +338,14 @@ class TransportFactoryTest extends UnitTestCase
         ];
 
         $transport = $this->getSubject($eventDispatcher)->get($mailSettings);
+        $eventDispatcher->expects(self::once())->method('dispatch')->with(self::anything());
+
         $message = new MailMessage();
         $message->setTo(['foo@bar.com'])
             ->text('foo')
             ->from('bar@foo.com')
         ;
         $transport->send($message);
-
-        $eventDispatcher->dispatch(Argument::any())->shouldHaveBeenCalledOnce();
     }
 
     /**
-- 
GitLab