X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC729Test.php;fp=vendor%2Fdoctrine%2Form%2Ftests%2FDoctrine%2FTests%2FORM%2FFunctional%2FTicket%2FDDC729Test.php;h=3762497458ce7729c465536bf3ba9cac45bd12e2;hb=8b04b2d11798dee4f3e1358e4f43e97a6df851f6;hp=0000000000000000000000000000000000000000;hpb=73568cf05a785a45f94ca3f2351d9e07bf917958;p=zf2.biz%2Fapplication_blanche.git diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC729Test.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC729Test.php new file mode 100644 index 0000000..3762497 --- /dev/null +++ b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC729Test.php @@ -0,0 +1,182 @@ +_em); + $schemaTool->createSchema(array( + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC729A'), + $this->_em->getClassMetadata(__NAMESPACE__ . '\DDC729B'), + )); + } catch(\Exception $e) { + + } + } + + public function testMergeManyToMany() + { + $a = new DDC729A(); + $b = new DDC729B(); + $a->related[] = $b; + + $this->_em->persist($a); + $this->_em->persist($b); + $this->_em->flush(); + $this->_em->clear(); + $aId = $a->id; + + $a = new DDC729A(); + $a->id = $aId; + + $this->assertInstanceOf('Doctrine\Common\Collections\ArrayCollection', $a->related); + + $a = $this->_em->merge($a); + + $this->assertInstanceOf('Doctrine\ORM\PersistentCollection', $a->related); + + $this->assertFalse($a->related->isInitialized(), "Collection should not be marked initialized."); + $this->assertFalse($a->related->isDirty(), "Collection should not be marked as dirty."); + + $this->_em->flush(); + $this->_em->clear(); + + $a = $this->_em->find(__NAMESPACE__ . '\DDC729A', $aId); + $this->assertEquals(1, count($a->related)); + } + + public function testUnidirectionalMergeManyToMany() + { + $a = new DDC729A(); + $b1 = new DDC729B(); + $b2 = new DDC729B(); + $a->related[] = $b1; + + $this->_em->persist($a); + $this->_em->persist($b1); + $this->_em->persist($b2); + $this->_em->flush(); + $this->_em->clear(); + $aId = $a->id; + + $a = new DDC729A(); + $a->id = $aId; + + $a = $this->_em->merge($a); + + $a->related->set(0, $this->_em->merge($b1)); + + $a->related->set(1, $this->_em->merge($b2)); + + $this->_em->flush(); + $this->_em->clear(); + + $a = $this->_em->find(__NAMESPACE__ . '\DDC729A', $aId); + $this->assertEquals(2, count($a->related)); + } + + public function testBidirectionalMergeManyToMany() + { + $a = new DDC729A(); + $b1 = new DDC729B(); + $b2 = new DDC729B(); + $a->related[] = $b1; + + $this->_em->persist($a); + $this->_em->persist($b1); + $this->_em->persist($b2); + $this->_em->flush(); + $this->_em->clear(); + $aId = $a->id; + + $a = new DDC729A(); + $a->id = $aId; + + $a = $this->_em->merge($a); + + $a->related->set(0, $this->_em->merge($b1)); + $b1->related->set(0, $a); + + $a->related->set(1, $this->_em->merge($b2)); + $b2->related->set(0, $a); + + $this->_em->flush(); + $this->_em->clear(); + + $a = $this->_em->find(__NAMESPACE__ . '\DDC729A', $aId); + $this->assertEquals(2, count($a->related)); + } + + public function testBidirectionalMultiMergeManyToMany() + { + $a = new DDC729A(); + $b1 = new DDC729B(); + $b2 = new DDC729B(); + $a->related[] = $b1; + + $this->_em->persist($a); + $this->_em->persist($b1); + $this->_em->persist($b2); + $this->_em->flush(); + $this->_em->clear(); + $aId = $a->id; + + $a = new DDC729A(); + $a->id = $aId; + + $a = $this->_em->merge($a); + + $a->related->set(0, $this->_em->merge($b1)); + $b1->related->set(0, $this->_em->merge($a)); + + $a->related->set(1, $this->_em->merge($b2)); + $b2->related->set(0, $this->_em->merge($a)); + + $this->_em->flush(); + $this->_em->clear(); + + $a = $this->_em->find(__NAMESPACE__ . '\DDC729A', $aId); + $this->assertEquals(2, count($a->related)); + } +} + +/** + * @Entity + */ +class DDC729A +{ + /** @Id @GeneratedValue @Column(type="integer") */ + public $id; + + /** @ManyToMany(targetEntity="DDC729B", inversedBy="related") */ + public $related; + + public function __construct() + { + $this->related = new \Doctrine\Common\Collections\ArrayCollection(); + } +} + +/** + * @Entity + */ +class DDC729B +{ + /** @Id @GeneratedValue @Column(type="integer") */ + public $id; + + /** @ManyToMany(targetEntity="DDC729B", mappedBy="related") */ + public $related; + + public function __construct() + { + $this->related = new \Doctrine\Common\Collections\ArrayCollection(); + } +}