X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC258Test.php;fp=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC258Test.php;h=0d766eaa098c2e0bab3c89200ee6d2630196bc87;hb=8b04b2d11798dee4f3e1358e4f43e97a6df851f6;hp=0000000000000000000000000000000000000000;hpb=73568cf05a785a45f94ca3f2351d9e07bf917958;p=zf2.biz%2Fgalerie.git diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC258Test.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC258Test.php new file mode 100644 index 0000000..0d766ea --- /dev/null +++ b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC258Test.php @@ -0,0 +1,142 @@ +_schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC258Super'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC258Class1'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC258Class2'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC258Class3'), + )); + } + + /** + * @group DDC-258 + */ + public function testIssue() + { + //$this->_em->getConnection()->getConfiguration()->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger); + + $c1 = new DDC258Class1(); + $c1->title = "Foo"; + $c1->description = "Foo"; + + $c2 = new DDC258Class2(); + $c2->title = "Bar"; + $c2->description = "Bar"; + $c2->text = "Bar"; + + $c3 = new DDC258Class3(); + $c3->apples = "Baz"; + $c3->bananas = "Baz"; + + $this->_em->persist($c1); + $this->_em->persist($c2); + $this->_em->persist($c3); + $this->_em->flush(); + $this->_em->clear(); + + $e2 = $this->_em->find('Doctrine\Tests\ORM\Functional\Ticket\DDC258Super', $c2->id); + + $this->assertInstanceOf('Doctrine\Tests\ORM\Functional\Ticket\DDC258Class2', $e2); + $this->assertEquals('Bar', $e2->title); + $this->assertEquals('Bar', $e2->description); + $this->assertEquals('Bar', $e2->text); + + $all = $this->_em->getRepository(__NAMESPACE__.'\DDC258Super')->findAll(); + + foreach ($all as $obj) { + if ($obj instanceof DDC258Class1) { + $this->assertEquals('Foo', $obj->title); + $this->assertEquals('Foo', $obj->description); + } else if ($obj instanceof DDC258Class2) { + $this->assertTrue($e2 === $obj); + $this->assertEquals('Bar', $obj->title); + $this->assertEquals('Bar', $obj->description); + $this->assertEquals('Bar', $obj->text); + } else if ($obj instanceof DDC258Class3) { + $this->assertEquals('Baz', $obj->apples); + $this->assertEquals('Baz', $obj->bananas); + } else { + $this->fail('Instance of DDC258Class1, DDC258Class2 or DDC258Class3 expected.'); + } + } + } +} + +/** + * @Entity + * @Table(name="DDC258Super") + * @InheritanceType("JOINED") + * @DiscriminatorColumn(name="type", type="string") + * @DiscriminatorMap({"class1" = "DDC258Class1", "class2" = "DDC258Class2", "class3"="DDC258Class3"}) + */ +abstract class DDC258Super +{ + /** + * @Id @Column(name="id", type="integer") + * @GeneratedValue(strategy="AUTO") + */ + public $id; +} + +/** + * @Entity + */ +class DDC258Class1 extends DDC258Super +{ + /** + * @Column(name="title", type="string", length=150) + */ + public $title; + + /** + * @Column(name="content", type="string", length=500) + */ + public $description; +} + +/** + * @Entity + */ +class DDC258Class2 extends DDC258Super +{ + /** + * @Column(name="title", type="string", length=150) + */ + public $title; + + /** + * @Column(name="content", type="string", length=500) + */ + public $description; + + /** + * @Column(name="text", type="text") + */ + public $text; +} + +/** + * An extra class to demonstrate why title and description aren't in Super + * + * @Entity + */ +class DDC258Class3 extends DDC258Super +{ + /** + * @Column(name="title", type="string", length=150) + */ + public $apples; + + /** + * @Column(name="content", type="string", length=500) + */ + public $bananas; +} \ No newline at end of file