Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / Functional / Ticket / DDC1383Test.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1383Test.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC1383Test.php
new file mode 100644 (file)
index 0000000..f6b5a24
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+namespace Doctrine\Tests\ORM\Functional\Ticket;
+use Doctrine\ORM\UnitOfWork;
+
+require_once __DIR__ . '/../../../TestInit.php';
+
+/**
+ * @group DDC-1383
+ */
+class DDC1383Test extends \Doctrine\Tests\OrmFunctionalTestCase
+{
+    protected function setUp()
+    {
+        parent::setUp();
+
+        try {
+            $this->_schemaTool->createSchema(array(
+                $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383AbstractEntity'),
+                $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC1383Entity'),
+            ));
+        } catch(\Exception $ignored) {}
+    }
+
+    public function testFailingCase()
+    {
+               $parent = new DDC1383Entity();
+               $child = new DDC1383Entity();
+
+               $child->setReference($parent);
+
+               $this->_em->persist($parent);
+               $this->_em->persist($child);
+
+               $id = $child->getId();
+
+               $this->_em->flush();
+               $this->_em->clear();
+
+               // Try merging the parent entity
+               $child = $this->_em->merge($child);
+               $parent = $child->getReference();
+
+               // Parent is not instance of the abstract class
+               self::assertTrue($parent instanceof DDC1383AbstractEntity,
+                               "Entity class is " . get_class($parent) . ', "DDC1383AbstractEntity" was expected');
+
+               // Parent is NOT instance of entity
+               self::assertTrue($parent instanceof DDC1383Entity,
+                               "Entity class is " . get_class($parent) . ', "DDC1383Entity" was expected');
+    }
+}
+
+/**
+ * @Entity
+ * @InheritanceType("JOINED")
+ * @DiscriminatorColumn(name="discr", type="integer")
+ * @DiscriminatorMap({1 = "DDC1383Entity"})
+ */
+abstract class DDC1383AbstractEntity
+{
+       /**
+        * @Id
+        * @Column(type="integer")
+        * @GeneratedValue
+        */
+       protected $id;
+
+       public function getId()
+       {
+               return $this->id;
+       }
+
+       public function setId($id)
+       {
+               $this->id = $id;
+       }
+}
+
+/**
+ * @Entity
+ */
+class DDC1383Entity extends DDC1383AbstractEntity
+{
+       /**
+        * @ManyToOne(targetEntity="DDC1383AbstractEntity")
+        */
+       protected $reference;
+
+       public function getReference()
+       {
+               return $this->reference;
+       }
+
+       public function setReference(DDC1383AbstractEntity $reference)
+       {
+               $this->reference = $reference;
+       }
+}
\ No newline at end of file