From 8702a3331184e859dacf4c9393b412c4d7009e38 Mon Sep 17 00:00:00 2001 From: Jan Lam Date: Tue, 20 Oct 2026 08:28:37 +0200 Subject: [PATCH] Support doctrine/orm ^3 - Allow doctrine/orm ^3.0, and doctrine/dbal ^3.6||^4.0 as dev dependency. - Require hostnet/entity-tracker-component ^3.1.0, the first release that supports ORM 3. - Tests: bootstrap the entity manager with ORMSetup::createConfiguration() and an AttributeDriver, build the connection from a separate DBAL Configuration, and mock the ORM ClassMetadata. Co-Authored-By: Claude Sonnet 5.5 --- composer.json | 5 +++-- test/Functional/DiscriminatorMapTest.php | 15 ++++++++------- test/Functional/EmbeddableTest.php | 15 ++++++++------- test/Listener/MutationListenerTest.php | 2 +- test/Resolver/MutationResolverTest.php | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/composer.json b/composer.json index a58d3d7..f59d9ca 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,11 @@ "minimum-stability": "stable", "require": { "php": "^8.3", - "doctrine/orm": "^2.7.4", - "hostnet/entity-tracker-component": "^3.0.0" + "doctrine/orm": "^2.7.4||^3.0", + "hostnet/entity-tracker-component": "^3.1.0" }, "require-dev": { + "doctrine/dbal": "^3.6||^4.0", "hostnet/database-test-lib": "^2.0.2", "hostnet/phpcs-tool": "^9.1.0", "phpunit/phpunit": "^9.5.6", diff --git a/test/Functional/DiscriminatorMapTest.php b/test/Functional/DiscriminatorMapTest.php index a98d0f2..107f7a8 100644 --- a/test/Functional/DiscriminatorMapTest.php +++ b/test/Functional/DiscriminatorMapTest.php @@ -7,9 +7,11 @@ namespace Hostnet\Component\EntityMutation\Functional; use Doctrine\Common\EventManager; +use Doctrine\DBAL\Configuration as DbalConfiguration; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory; use Doctrine\ORM\EntityManager; +use Doctrine\ORM\Mapping\Driver\AttributeDriver; use Doctrine\ORM\ORMSetup; use Doctrine\ORM\Tools\SchemaTool; use Functional\Entity\Contract; @@ -49,12 +51,11 @@ public static function setUpBeforeClass(): void $params = self::$connection->getConnectionParams(); $event_manager = new EventManager(); - $configuration = ORMSetup::createAttributeMetadataConfiguration( - paths: [__DIR__ . '/Entity'], - isDevMode: true, - reportFieldsWhereDeclared: true, - ); - $configuration->setSchemaManagerFactory(new DefaultSchemaManagerFactory()); + $configuration = ORMSetup::createConfiguration(true); + $configuration->setMetadataDriverImpl(new AttributeDriver([__DIR__ . '/Entity'], true)); + + $dbal_configuration = new DbalConfiguration(); + $dbal_configuration->setSchemaManagerFactory(new DefaultSchemaManagerFactory()); $entity_metadat_provider = new EntityMetadataProvider(); $mutation_metadata_provider = new EntityMutationMetadataProvider(); @@ -70,7 +71,7 @@ public static function setUpBeforeClass(): void $event_manager->addEventListener('preFlush', $entity_changed_listener); $event_manager->addEventListener('entityChanged', $mutation_listener); - $dbal_connection = DriverManager::getConnection($params, $configuration, $event_manager); + $dbal_connection = DriverManager::getConnection($params, $dbal_configuration, $event_manager); self::$entity_manager = new EntityManager($dbal_connection, $configuration, $event_manager); diff --git a/test/Functional/EmbeddableTest.php b/test/Functional/EmbeddableTest.php index 71f4a90..ab1dfaf 100644 --- a/test/Functional/EmbeddableTest.php +++ b/test/Functional/EmbeddableTest.php @@ -7,9 +7,11 @@ namespace Hostnet\Component\EntityMutation\Functional; use Doctrine\Common\EventManager; +use Doctrine\DBAL\Configuration as DbalConfiguration; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Schema\DefaultSchemaManagerFactory; use Doctrine\ORM\EntityManager; +use Doctrine\ORM\Mapping\Driver\AttributeDriver; use Doctrine\ORM\ORMSetup; use Doctrine\ORM\Tools\SchemaTool; use Hostnet\Component\DatabaseTest\MysqlPersistentConnection; @@ -45,12 +47,11 @@ public static function setUpBeforeClass(): void $params = self::$connection->getConnectionParams(); $event_manager = new EventManager(); - $configuration = ORMSetup::createAttributeMetadataConfiguration( - paths: [__DIR__ . '/Entity'], - isDevMode: true, - reportFieldsWhereDeclared: true, - ); - $configuration->setSchemaManagerFactory(new DefaultSchemaManagerFactory()); + $configuration = ORMSetup::createConfiguration(true); + $configuration->setMetadataDriverImpl(new AttributeDriver([__DIR__ . '/Entity'], true)); + + $dbal_configuration = new DbalConfiguration(); + $dbal_configuration->setSchemaManagerFactory(new DefaultSchemaManagerFactory()); $entity_metadata_provider = new EntityMetadataProvider(); $mutation_metadata_provider = new EntityMutationMetadataProvider(); @@ -66,7 +67,7 @@ public static function setUpBeforeClass(): void $event_manager->addEventListener('preFlush', $entity_changed_listener); $event_manager->addEventListener('entityChanged', $mutation_listener); - $dbal_connection = DriverManager::getConnection($params, $configuration, $event_manager); + $dbal_connection = DriverManager::getConnection($params, $dbal_configuration, $event_manager); self::$entity_manager = new EntityManager($dbal_connection, $configuration, $event_manager); diff --git a/test/Listener/MutationListenerTest.php b/test/Listener/MutationListenerTest.php index 7d68312..1010ac9 100644 --- a/test/Listener/MutationListenerTest.php +++ b/test/Listener/MutationListenerTest.php @@ -7,7 +7,7 @@ namespace Hostnet\Component\EntityMutation\Listener; use Doctrine\ORM\EntityManagerInterface; -use Doctrine\Persistence\Mapping\ClassMetadata; +use Doctrine\ORM\Mapping\ClassMetadata; use Hostnet\Component\EntityMutation\Attributes\Mutation; use Hostnet\Component\EntityMutation\Mocked\MockMutationEntity; use Hostnet\Component\EntityMutation\Mocked\MockMutationEntityAttribute; diff --git a/test/Resolver/MutationResolverTest.php b/test/Resolver/MutationResolverTest.php index ed6e93b..43bbd59 100644 --- a/test/Resolver/MutationResolverTest.php +++ b/test/Resolver/MutationResolverTest.php @@ -7,7 +7,7 @@ namespace Hostnet\Component\EntityMutation\Resolver; use Doctrine\ORM\EntityManagerInterface; -use Doctrine\Persistence\Mapping\ClassMetadata; +use Doctrine\ORM\Mapping\ClassMetadata; use Hostnet\Component\EntityMutation\Attributes\Mutation; use Hostnet\Component\EntityTracker\Provider\EntityMetadataProvider; use PHPUnit\Framework\MockObject\MockObject;