From 7cb88c4db569f8cdf9657e87ef2ea3e7f4e52fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Fri, 15 Dec 2023 09:15:04 +0100 Subject: [PATCH] Convert `@final` to hard final --- UPGRADE.md | 8 ++++++++ phpcs.xml.dist | 2 ++ phpstan-baseline.neon | 7 ++++++- src/Executor/MongoDBExecutor.php | 8 +++----- src/Executor/ORMExecutor.php | 4 +--- src/Executor/PHPCRExecutor.php | 4 +--- src/Purger/MongoDBPurger.php | 4 +--- src/Purger/MongoDBPurgerInterface.php | 15 +++++++++++++++ src/Purger/ORMPurger.php | 4 +--- src/Purger/ORMPurgerInterface.php | 3 --- src/Purger/PHPCRPurger.php | 4 +--- src/Purger/PHPCRPurgerInterface.php | 13 +++++++++++++ .../Executor/ORMExecutorSharedFixtureTest.php | 3 +-- .../DataFixtures/Executor/ORMExecutorTest.php | 13 +++++-------- .../DataFixtures/Executor/PHPCRExecutorTest.php | 13 +++++-------- 15 files changed, 63 insertions(+), 42 deletions(-) create mode 100644 src/Purger/MongoDBPurgerInterface.php create mode 100644 src/Purger/PHPCRPurgerInterface.php diff --git a/UPGRADE.md b/UPGRADE.md index d17a1c9..0c02f9f 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -33,6 +33,14 @@ For the following method, the `class` param is now mandatory: The following method was removed: - `ReferenceRepository::getReferences` +The following classes are now final, each of them has an interface you can implement: +- `Doctrine\Common\DataFixtures\Executor\MongoDBExecutor` +- `Doctrine\Common\DataFixtures\Executor\ORMExecutor` +- `Doctrine\Common\DataFixtures\Executor\PHPCSExecutor` +- `Doctrine\Common\DataFixtures\Purger\MongoDBPurger` +- `Doctrine\Common\DataFixtures\Purger\ORMPurger` +- `Doctrine\Common\DataFixtures\Purger\PHPCSPurger` + # Upgrade to 1.8 ## Deprecated closure loggers in favor of PSR-3 diff --git a/phpcs.xml.dist b/phpcs.xml.dist index ecc2bb5..7f2131f 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -37,7 +37,9 @@ src/DependentFixtureInterface.php src/FixtureInterface.php + src/Purger/MongoDBPurgerInterface.php src/Purger/ORMPurgerInterface.php + src/Purger/PHPCRPurgerInterface.php src/Purger/PurgerInterface.php src/OrderedFixtureInterface.php src/SharedFixtureInterface.php diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 8ecbfb2..01a4d40 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -65,6 +65,11 @@ parameters: count: 1 path: src/Purger/PHPCRPurger.php + - + message: "#^Parameter \\$dm of method Doctrine\\\\Common\\\\DataFixtures\\\\Purger\\\\PHPCRPurgerInterface\\:\\:setDocumentManager\\(\\) has invalid type Doctrine\\\\Common\\\\DataFixtures\\\\Purger\\\\DocumentManager\\.$#" + count: 1 + path: src/Purger/PHPCRPurgerInterface.php + - message: "#^Access to an undefined property Doctrine\\\\Persistence\\\\Mapping\\\\ClassMetadata\\\\:\\:\\$name\\.$#" count: 1 @@ -97,7 +102,7 @@ parameters: - message: "#^Method Doctrine\\\\Tests\\\\Common\\\\DataFixtures\\\\Executor\\\\PHPCRExecutorTest\\:\\:getDocumentManager\\(\\) has invalid return type Doctrine\\\\ODM\\\\PHPCR\\\\DocumentManager\\.$#" - count: 2 + count: 1 path: tests/Common/DataFixtures/Executor/PHPCRExecutorTest.php - diff --git a/src/Executor/MongoDBExecutor.php b/src/Executor/MongoDBExecutor.php index 1b02e5c..de0fd3a 100644 --- a/src/Executor/MongoDBExecutor.php +++ b/src/Executor/MongoDBExecutor.php @@ -5,16 +5,14 @@ declare(strict_types=1); namespace Doctrine\Common\DataFixtures\Executor; use Doctrine\Common\DataFixtures\Event\Listener\MongoDBReferenceListener; -use Doctrine\Common\DataFixtures\Purger\MongoDBPurger; +use Doctrine\Common\DataFixtures\Purger\MongoDBPurgerInterface; use Doctrine\Common\DataFixtures\ReferenceRepository; use Doctrine\ODM\MongoDB\DocumentManager; /** * Class responsible for executing data fixtures. - * - * @final since 1.8.0 */ -class MongoDBExecutor extends AbstractExecutor +final class MongoDBExecutor extends AbstractExecutor { private MongoDBReferenceListener $listener; @@ -23,7 +21,7 @@ class MongoDBExecutor extends AbstractExecutor * * @param DocumentManager $dm DocumentManager instance used for persistence. */ - public function __construct(private DocumentManager $dm, MongoDBPurger|null $purger = null) + public function __construct(private DocumentManager $dm, MongoDBPurgerInterface|null $purger = null) { if ($purger !== null) { $this->purger = $purger; diff --git a/src/Executor/ORMExecutor.php b/src/Executor/ORMExecutor.php index f1f10da..fa2e2c4 100644 --- a/src/Executor/ORMExecutor.php +++ b/src/Executor/ORMExecutor.php @@ -8,10 +8,8 @@ use Doctrine\ORM\EntityManagerInterface; /** * Class responsible for executing data fixtures. - * - * @final since 1.8.0 */ -class ORMExecutor extends AbstractExecutor +final class ORMExecutor extends AbstractExecutor { use ORMExecutorCommon; diff --git a/src/Executor/PHPCRExecutor.php b/src/Executor/PHPCRExecutor.php index 7a68721..1d06204 100644 --- a/src/Executor/PHPCRExecutor.php +++ b/src/Executor/PHPCRExecutor.php @@ -11,10 +11,8 @@ use function method_exists; /** * Class responsible for executing data fixtures. - * - * @final since 1.8.0 */ -class PHPCRExecutor extends AbstractExecutor +final class PHPCRExecutor extends AbstractExecutor { /** * @param DocumentManagerInterface $dm manager instance used for persisting the fixtures diff --git a/src/Purger/MongoDBPurger.php b/src/Purger/MongoDBPurger.php index c7013a2..43e5207 100644 --- a/src/Purger/MongoDBPurger.php +++ b/src/Purger/MongoDBPurger.php @@ -8,10 +8,8 @@ use Doctrine\ODM\MongoDB\DocumentManager; /** * Class responsible for purging databases of data before reloading data fixtures. - * - * @final since 1.8.0 */ -class MongoDBPurger implements PurgerInterface +final class MongoDBPurger implements MongoDBPurgerInterface { /** * Construct new purger instance. diff --git a/src/Purger/MongoDBPurgerInterface.php b/src/Purger/MongoDBPurgerInterface.php new file mode 100644 index 0000000..8586d47 --- /dev/null +++ b/src/Purger/MongoDBPurgerInterface.php @@ -0,0 +1,15 @@ +assertEquals('admin@example.com', $userReference->getEmail()); } - /** @return SharedFixtureInterface&MockObject */ - private function getMockFixture(): SharedFixtureInterface + private function getMockFixture(): SharedFixtureInterface&MockObject { return $this->createMock(SharedFixtureInterface::class); } diff --git a/tests/Common/DataFixtures/Executor/ORMExecutorTest.php b/tests/Common/DataFixtures/Executor/ORMExecutorTest.php index 3df210b..3396956 100644 --- a/tests/Common/DataFixtures/Executor/ORMExecutorTest.php +++ b/tests/Common/DataFixtures/Executor/ORMExecutorTest.php @@ -8,7 +8,7 @@ use Closure; use Doctrine\Common\DataFixtures\Executor\MultipleTransactionORMExecutor; use Doctrine\Common\DataFixtures\Executor\ORMExecutor; use Doctrine\Common\DataFixtures\FixtureInterface; -use Doctrine\Common\DataFixtures\Purger\ORMPurger; +use Doctrine\Common\DataFixtures\Purger\ORMPurgerInterface; use Doctrine\Common\EventManager; use Doctrine\ORM\EntityManagerInterface; use Doctrine\Tests\Common\DataFixtures\BaseTestCase; @@ -123,21 +123,18 @@ class ORMExecutorTest extends BaseTestCase @$executor->execute([$fixture, $fixture]); } - /** @return EntityManagerInterface&MockObject */ - private function getMockEntityManager(): EntityManagerInterface + private function getMockEntityManager(): EntityManagerInterface&MockObject { return $this->createMock(ForwardCompatibleEntityManager::class); } - /** @return FixtureInterface&MockObject */ - private function getMockFixture(): FixtureInterface + private function getMockFixture(): FixtureInterface&MockObject { return $this->createMock(FixtureInterface::class); } - /** @return ORMPurger&MockObject */ - private function getMockPurger(): ORMPurger + private function getMockPurger(): ORMPurgerInterface&MockObject { - return $this->createMock(ORMPurger::class); + return $this->createMock(ORMPurgerInterface::class); } } diff --git a/tests/Common/DataFixtures/Executor/PHPCRExecutorTest.php b/tests/Common/DataFixtures/Executor/PHPCRExecutorTest.php index 1d2b572..563a8b5 100644 --- a/tests/Common/DataFixtures/Executor/PHPCRExecutorTest.php +++ b/tests/Common/DataFixtures/Executor/PHPCRExecutorTest.php @@ -6,7 +6,7 @@ namespace Doctrine\Tests\Common\DataFixtures\Executor; use Doctrine\Common\DataFixtures\Executor\PHPCRExecutor; use Doctrine\Common\DataFixtures\FixtureInterface; -use Doctrine\Common\DataFixtures\Purger\PHPCRPurger; +use Doctrine\Common\DataFixtures\Purger\PHPCRPurgerInterface; use Doctrine\ODM\PHPCR\DocumentManager; use Doctrine\Tests\Common\DataFixtures\BaseTestCase; use Exception; @@ -119,14 +119,12 @@ class PHPCRExecutorTest extends BaseTestCase } } - /** @return PHPCRPurger&MockObject */ - private function getPurger(): PHPCRPurger + private function getPurger(): PHPCRPurgerInterface&MockObject { - return $this->createMock(PHPCRPurger::class); + return $this->createMock(PHPCRPurgerInterface::class); } - /** @return DocumentManager&MockObject */ - private function getDocumentManager(): DocumentManager + private function getDocumentManager(): DocumentManager&MockObject { if (! class_exists(DocumentManager::class)) { $this->markTestSkipped('Missing doctrine/phpcr-odm'); @@ -143,8 +141,7 @@ class PHPCRExecutorTest extends BaseTestCase ->getMock(); } - /** @return FixtureInterface&MockObject */ - private function getMockFixture(): FixtureInterface + private function getMockFixture(): FixtureInterface&MockObject { return $this->createMock(FixtureInterface::class); }