From 41c637a6d996831c8ce02538fb34fbc1936ef994 Mon Sep 17 00:00:00 2001 From: Kevin Bond Date: Tue, 24 Oct 2023 20:21:03 -0400 Subject: [PATCH] feat: Symfony 7 support --- .github/workflows/continuous-integration.yml | 4 +++ Form/DoctrineMongoDBExtension.php | 5 ++-- Form/DoctrineMongoDBTypeGuesser.php | 14 ++++----- Loader/SymfonyFixturesLoader.php | 4 --- Tests/Validator/Constraints/UniqueTest.php | 9 ++---- composer.json | 31 ++++++++++---------- 6 files changed, 31 insertions(+), 36 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 130f5274..e9533536 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -30,6 +30,7 @@ jobs: symfony-version: - "5.4.*" - "6.4.*" + - "7.0.x" driver-version: - "stable" dependencies: @@ -41,6 +42,9 @@ jobs: driver-version: "1.5.0" stability: "stable" symfony-version: "5.4.*" + exclude: + - php-version: "8.1" + symfony-version: "7.0.x" services: mongodb: diff --git a/Form/DoctrineMongoDBExtension.php b/Form/DoctrineMongoDBExtension.php index 2cda9710..7428e77c 100644 --- a/Form/DoctrineMongoDBExtension.php +++ b/Form/DoctrineMongoDBExtension.php @@ -23,15 +23,14 @@ public function __construct(ManagerRegistry $registry) } /** @return FormTypeInterface[] */ - protected function loadTypes() + protected function loadTypes(): array { return [ new Type\DocumentType($this->registry), ]; } - /** @return FormTypeGuesserInterface|null */ - protected function loadTypeGuesser() + protected function loadTypeGuesser(): ?FormTypeGuesserInterface { return new DoctrineMongoDBTypeGuesser($this->registry); } diff --git a/Form/DoctrineMongoDBTypeGuesser.php b/Form/DoctrineMongoDBTypeGuesser.php index 4f69b16c..8330eec4 100644 --- a/Form/DoctrineMongoDBTypeGuesser.php +++ b/Form/DoctrineMongoDBTypeGuesser.php @@ -38,8 +38,7 @@ public function __construct(ManagerRegistry $registry) $this->registry = $registry; } - /** @return TypeGuess|null */ - public function guessType(string $class, string $property) + public function guessType(string $class, string $property): ?TypeGuess { $ret = $this->getMetadata($class); if (! $ret) { @@ -114,10 +113,11 @@ public function guessType(string $class, string $property) Guess::MEDIUM_CONFIDENCE, ); } + + return null; } - /** @return ValueGuess|null */ - public function guessRequired(string $class, string $property) + public function guessRequired(string $class, string $property): ?ValueGuess { $ret = $this->getMetadata($class); if ($ret && $ret[0]->hasField($property)) { @@ -137,8 +137,7 @@ public function guessRequired(string $class, string $property) return null; } - /** @return ValueGuess|null */ - public function guessMaxLength(string $class, string $property) + public function guessMaxLength(string $class, string $property): ?ValueGuess { return null; } @@ -150,8 +149,7 @@ public function guessMinLength($class, $property): void { } - /** @return ValueGuess|null */ - public function guessPattern(string $class, string $property) + public function guessPattern(string $class, string $property): ?ValueGuess { $ret = $this->getMetadata($class); if (! $ret || ! $ret[0]->hasField($property) || $ret[0]->hasAssociation($property)) { diff --git a/Loader/SymfonyFixturesLoader.php b/Loader/SymfonyFixturesLoader.php index 9c5e802e..4c2e086b 100644 --- a/Loader/SymfonyFixturesLoader.php +++ b/Loader/SymfonyFixturesLoader.php @@ -67,10 +67,6 @@ public function addFixture(FixtureInterface $fixture): void $this->addGroupsFixtureMapping($class, $fixture::getGroups()); } - if ($fixture instanceof ContainerAwareInterface) { - $fixture->setContainer($this->container); - } - parent::addFixture($fixture); } diff --git a/Tests/Validator/Constraints/UniqueTest.php b/Tests/Validator/Constraints/UniqueTest.php index 374de46f..0ba575c5 100644 --- a/Tests/Validator/Constraints/UniqueTest.php +++ b/Tests/Validator/Constraints/UniqueTest.php @@ -7,9 +7,7 @@ use Doctrine\Bundle\MongoDBBundle\Validator\Constraints\Unique; use PHPUnit\Framework\TestCase; use Symfony\Component\Validator\Mapping\ClassMetadata; -use Symfony\Component\Validator\Mapping\Loader\AnnotationLoader; - -use function assert; +use Symfony\Component\Validator\Mapping\Loader\AttributeLoader; final class UniqueTest extends TestCase { @@ -17,18 +15,17 @@ public function testWithDefaultProperty(): void { $metadata = new ClassMetadata(UniqueDocumentDummyOne::class); - $loader = new AnnotationLoader(); + $loader = new AttributeLoader(); self::assertTrue($loader->loadClassMetadata($metadata)); [$constraint] = $metadata->getConstraints(); - assert($constraint instanceof Unique); + self::assertInstanceOf(Unique::class, $constraint); self::assertSame(['email'], $constraint->fields); self::assertSame('doctrine_odm.mongodb.unique', $constraint->validatedBy()); } } -/** @Unique(fields={"email"}) */ #[Unique(['email'])] class UniqueDocumentDummyOne { diff --git a/composer.json b/composer.json index 59652ded..d2a6d933 100644 --- a/composer.json +++ b/composer.json @@ -30,27 +30,27 @@ "doctrine/persistence": "^2.2 || ^3.0", "jean85/pretty-package-versions": "^1.3.0 || ^2.0.1", "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/config": "^5.4 || ^6.2", - "symfony/console": "^5.4 || ^6.2", - "symfony/dependency-injection": "^5.4 || ^6.2", + "symfony/config": "^5.4 || ^6.2 || ^7.0", + "symfony/console": "^5.4 || ^6.2 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3.0", - "symfony/doctrine-bridge": "^5.4.19 || ^6.2", - "symfony/framework-bundle": "^5.4 || ^6.2", - "symfony/http-kernel": "^5.4 || ^6.2", - "symfony/options-resolver": "^5.4 || ^6.2" + "symfony/doctrine-bridge": "^5.4.19 || ^6.2 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.2 || ^7.0" }, "require-dev": { "doctrine/coding-standard": "^11.0", "doctrine/data-fixtures": "^1.3", "phpunit/phpunit": "^9.5.5", "psalm/plugin-symfony": "^5.0", - "symfony/browser-kit": "^5.4 || ^6.2", - "symfony/form": "^5.4 || ^6.2", - "symfony/phpunit-bridge": "^6.2", - "symfony/security-bundle": "^5.4 || ^6.2", - "symfony/stopwatch": "^5.4 || ^6.2", - "symfony/validator": "^5.4 || ^6.2", - "symfony/yaml": "^5.4 || ^6.2", + "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", + "symfony/form": "^5.4 || ^6.2 || ^7.0", + "symfony/phpunit-bridge": "^6.2 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.2 || ^7.0", + "symfony/validator": "^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^5.4 || ^6.2 || ^7.0", "vimeo/psalm": "^5.12" }, "conflict": { @@ -59,7 +59,8 @@ "suggest": { "doctrine/data-fixtures": "Load data fixtures" }, - "minimum-stability": "stable", + "minimum-stability": "dev", + "prefer-stable": true, "autoload": { "psr-4": { "Doctrine\\Bundle\\MongoDBBundle\\": ""