diff --git a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3343Test.php b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3343Test.php index 4537c589f..9257883fd 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3343Test.php +++ b/tests/Doctrine/Tests/ORM/Functional/Ticket/DDC3343Test.php @@ -8,89 +8,57 @@ use Doctrine\ORM\Mapping\GeneratedValue; use Doctrine\ORM\Mapping\Id; use Doctrine\ORM\Mapping\ManyToOne; use Doctrine\ORM\Mapping\OneToMany; +use Doctrine\Tests\Models\Tweet\Tweet; +use Doctrine\Tests\Models\Tweet\User; /** * @group DDC-3343 */ class DDC3343Test extends \Doctrine\Tests\OrmFunctionalTestCase { + /** + * {@inheritDoc} + */ + protected function setUp() + { + $this->useModelSet('tweet'); + + parent::setUp(); + } + public function testEntityNotDeletedWhenRemovedFromExtraLazyAssociation() { - $this->_schemaTool->createSchema(array( - $this->_em->getClassMetadata(DDC3343User::CLASSNAME), - $this->_em->getClassMetadata(DDC3343Group::CLASSNAME), - )); + $user = new User(); + $tweet = new Tweet(); - // Save a group and an associated user (in an extra lazy association) - $group = new DDC3343Group(); - $user = new DDC3343User(); + $user->name = 'ocramius'; + $tweet->content = 'The cat is on the table'; - $group->users->add($user); + $user->addTweet($tweet); - $this->_em->persist($group); $this->_em->persist($user); + $this->_em->persist($tweet); $this->_em->flush(); - - // Fetch the group and the user again and remove the user from the collection. $this->_em->clear(); - $group = $this->_em->find(DDC3343Group::CLASSNAME, $group->id); - $user = $this->_em->find(DDC3343User::CLASSNAME, $user->id); + /* @var $user User */ + $user = $this->_em->find(User::CLASSNAME, $user->id); + $tweet = $this->_em->find(Tweet::CLASSNAME, $tweet->id); - $group->users->removeElement($user); + $user->tweets->removeElement($tweet); + + $this->assertCount(0, $user->tweets); - // Even though the collection is extra lazy, the user should not have been deleted. $this->_em->clear(); - /* @var $user DDC3343User */ - $user = $this->_em->find(DDC3343User::CLASSNAME, $user->id); - $this->assertInstanceOf(DDC3343User::CLASSNAME, $user); + /* @var $tweet Tweet */ + $tweet = $this->_em->find(Tweet::CLASSNAME, $tweet->id); + $this->assertInstanceOf( + Tweet::CLASSNAME, + $tweet, + 'Even though the collection is extra lazy, the tweet should not have been deleted' + ); - $this->assertNull($user->group); - } -} - -/** - * @Entity - */ -class DDC3343User -{ - const CLASSNAME = __CLASS__; - - /** - * @Id - * @GeneratedValue - * @Column(type="integer") - */ - public $id; - - /** - * @ManyToOne(targetEntity="DDC3343Group", inversedBy="users") - */ - public $group; -} - -/** - * @Entity - */ -class DDC3343Group -{ - const CLASSNAME = __CLASS__; - - /** - * @Id - * @GeneratedValue - * @Column(type="integer") - */ - public $id; - - /** - * @OneToMany(targetEntity="DDC3343User", mappedBy="group", fetch="EXTRA_LAZY") - */ - public $users; - - public function __construct() - { - $this->users = new ArrayCollection(); + $this->assertNull($tweet->author); } }