From d6809773dbb6d8085e29cbfec2aecadacb6b7e1c Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Sun, 25 Mar 2012 13:34:52 -0300 Subject: [PATCH] mention parent classes for identifier required exception. --- lib/Doctrine/ORM/Mapping/MappingException.php | 2 +- .../Tests/Models/DDC889/DDC889Entity.php | 33 ++++++++++++ .../ORM/Mapping/AbstractMappingDriverTest.php | 53 +++++++++++-------- ...trine.Tests.Models.DDC889.DDC889Entity.php | 3 ++ ...e.Tests.Models.DDC889.DDC889Entity.dcm.xml | 10 ++++ ...e.Tests.Models.DDC889.DDC889Entity.dcm.yml | 2 + 6 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 tests/Doctrine/Tests/Models/DDC889/DDC889Entity.php create mode 100644 tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.Models.DDC889.DDC889Entity.php create mode 100644 tests/Doctrine/Tests/ORM/Mapping/xml/Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.xml create mode 100644 tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.yml diff --git a/lib/Doctrine/ORM/Mapping/MappingException.php b/lib/Doctrine/ORM/Mapping/MappingException.php index ad2ad9307..b966364d7 100644 --- a/lib/Doctrine/ORM/Mapping/MappingException.php +++ b/lib/Doctrine/ORM/Mapping/MappingException.php @@ -37,7 +37,7 @@ class MappingException extends \Doctrine\ORM\ORMException if (null != ($parent = get_parent_class($entityName))) { return new self(sprintf( 'No identifier/primary key specified for Entity "%s" sub classe of "%s". Every Entity must have an identifier/primary key.', - $className, $parent + $entityName, $parent )); } diff --git a/tests/Doctrine/Tests/Models/DDC889/DDC889Entity.php b/tests/Doctrine/Tests/Models/DDC889/DDC889Entity.php new file mode 100644 index 000000000..59cd21a61 --- /dev/null +++ b/tests/Doctrine/Tests/Models/DDC889/DDC889Entity.php @@ -0,0 +1,33 @@ +. + */ + +namespace Doctrine\Tests\Models\DDC889; + +/** + * @Entity + */ +class DDC889Entity extends DDC889SuperClass +{ + + public static function loadMetadata(\Doctrine\ORM\Mapping\ClassMetadataInfo $metadata) + { + } + +} \ No newline at end of file diff --git a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php index 185bbeda3..4093407e1 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php @@ -24,6 +24,21 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase return $class; } + /** + * @param \Doctrine\ORM\EntityManager $entityClassName + * @return \Doctrine\ORM\Mapping\ClassMetadataFactory + */ + protected function createClassMetadataFactory(\Doctrine\ORM\EntityManager $em = null) + { + $driver = $this->_loadDriver(); + $em = $em ?: $this->_getTestEntityManager(); + $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); + $em->getConfiguration()->setMetadataDriverImpl($driver); + $factory->setEntityManager($em); + + return $factory; + } + public function testLoadMapping() { $entityClassName = 'Doctrine\Tests\ORM\Mapping\User'; @@ -329,12 +344,8 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase */ public function testMappedSuperclassWithRepository() { - $driver = $this->_loadDriver(); $em = $this->_getTestEntityManager(); - $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); - - $em->getConfiguration()->setMetadataDriverImpl($driver); - $factory->setEntityManager($em); + $factory = $this->createClassMetadataFactory($em); $class = $factory->getMetadataFor('Doctrine\Tests\Models\DDC869\DDC869CreditCardPayment'); @@ -365,12 +376,8 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase */ public function testDefaultFieldType() { - $driver = $this->_loadDriver(); $em = $this->_getTestEntityManager(); - $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); - - $em->getConfiguration()->setMetadataDriverImpl($driver); - $factory->setEntityManager($em); + $factory = $this->createClassMetadataFactory($em); $class = $factory->getMetadataFor('Doctrine\Tests\Models\DDC1476\DDC1476EntityWithDefaultFieldType'); @@ -429,11 +436,8 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase */ public function testNamingStrategy() { - $driver = $this->_loadDriver(); $em = $this->_getTestEntityManager(); - $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); - $em->getConfiguration()->setMetadataDriverImpl($driver); - $factory->setEntityManager($em); + $factory = $this->createClassMetadataFactory($em); $this->assertInstanceOf('Doctrine\ORM\Mapping\DefaultNamingStrategy', $em->getConfiguration()->getNamingStrategy()); @@ -467,15 +471,22 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase * @expectedException Doctrine\ORM\Mapping\MappingException * @expectedExceptionMessage Class "Doctrine\Tests\Models\DDC889\DDC889Class" sub classe of "Doctrine\Tests\Models\DDC889\DDC889SuperClass" is not a valid entity or mapped super class. */ - public function testinvalidEntityOrMappedSuperClassShouldMentionParentClasses() + public function testInvalidEntityOrMappedSuperClassShouldMentionParentClasses() { - $driver = $this->_loadDriver(); - $em = $this->_getTestEntityManager(); - $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); - $em->getConfiguration()->setMetadataDriverImpl($driver); - $factory->setEntityManager($em); + $this->createClassMetadata('Doctrine\Tests\Models\DDC889\DDC889Class'); + } - $factory->getMetadataFor('Doctrine\Tests\Models\DDC889\DDC889Class'); + /** + * @group DDC-889 + * @expectedException Doctrine\ORM\Mapping\MappingException + * @expectedExceptionMessage No identifier/primary key specified for Entity "Doctrine\Tests\Models\DDC889\DDC889Entity" sub classe of "Doctrine\Tests\Models\DDC889\DDC889SuperClass". Every Entity must have an identifier/primary key. + */ + public function testIdentifierRequiredShouldMentionParentClasses() + { + + $factory = $this->createClassMetadataFactory(); + + $factory->getMetadataFor('Doctrine\Tests\Models\DDC889\DDC889Entity'); } } diff --git a/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.Models.DDC889.DDC889Entity.php b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.Models.DDC889.DDC889Entity.php new file mode 100644 index 000000000..a14f3e7ea --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Mapping/php/Doctrine.Tests.Models.DDC889.DDC889Entity.php @@ -0,0 +1,3 @@ + + + + + + + \ No newline at end of file diff --git a/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.yml b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.yml new file mode 100644 index 000000000..aa932db21 --- /dev/null +++ b/tests/Doctrine/Tests/ORM/Mapping/yaml/Doctrine.Tests.Models.DDC889.DDC889Entity.dcm.yml @@ -0,0 +1,2 @@ +Doctrine\Tests\Models\DDC889\DDC889Entity: + type: entity \ No newline at end of file