Added coverage for orphanRemoval in OneToOne when unlinking an entity.
This commit is contained in:
parent
e3d133af04
commit
bd5393a318
48
tests/Doctrine/Tests/Models/CMS/CmsEmail.php
Normal file
48
tests/Doctrine/Tests/Models/CMS/CmsEmail.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Doctrine\Tests\Models\CMS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CmsEmail
|
||||||
|
*
|
||||||
|
* @Entity
|
||||||
|
* @Table(name="cms_emails")
|
||||||
|
*/
|
||||||
|
class CmsEmail
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @Column(type="integer")
|
||||||
|
* @Id @GeneratedValue
|
||||||
|
*/
|
||||||
|
public $id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Column(length=250)
|
||||||
|
*/
|
||||||
|
public $email;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OneToOne(targetEntity="CmsUser", mappedBy="email")
|
||||||
|
*/
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
public function getId() {
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEmail() {
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setEmail($email) {
|
||||||
|
$this->email = $email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUser() {
|
||||||
|
return $this->user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUser(CmsUser $user) {
|
||||||
|
$this->user = $user;
|
||||||
|
}
|
||||||
|
}
|
@ -42,6 +42,11 @@ class CmsUser
|
|||||||
* @OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
|
* @OneToOne(targetEntity="CmsAddress", mappedBy="user", cascade={"persist"}, orphanRemoval=true)
|
||||||
*/
|
*/
|
||||||
public $address;
|
public $address;
|
||||||
|
/**
|
||||||
|
* @OneToOne(targetEntity="CmsEmail", inversedBy="user", cascade={"persist"}, orphanRemoval=true)
|
||||||
|
* @JoinColumn(referencedColumnName="id", nullable=true)
|
||||||
|
*/
|
||||||
|
public $email;
|
||||||
/**
|
/**
|
||||||
* @ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge"})
|
* @ManyToMany(targetEntity="CmsGroup", inversedBy="users", cascade={"persist", "merge"})
|
||||||
* @JoinTable(name="cms_users_groups",
|
* @JoinTable(name="cms_users_groups",
|
||||||
@ -119,4 +124,16 @@ class CmsUser
|
|||||||
$address->setUser($this);
|
$address->setUser($this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getEmail() { return $this->email; }
|
||||||
|
|
||||||
|
public function setEmail(CmsEmail $email = null) {
|
||||||
|
if ($this->email !== $email) {
|
||||||
|
$this->email = $email;
|
||||||
|
|
||||||
|
if ($email) {
|
||||||
|
$email->setUser($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ class CustomTreeWalkersTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
{
|
{
|
||||||
$this->assertSqlGeneration(
|
$this->assertSqlGeneration(
|
||||||
'select u from Doctrine\Tests\Models\CMS\CmsUser u',
|
'select u from Doctrine\Tests\Models\CMS\CmsUser u',
|
||||||
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ WHERE c0_.id = 1"
|
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, c0_.email_id AS email_id4 FROM cms_users c0_ WHERE c0_.id = 1"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ class CustomTreeWalkersTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
{
|
{
|
||||||
$this->assertSqlGeneration(
|
$this->assertSqlGeneration(
|
||||||
'select u from Doctrine\Tests\Models\CMS\CmsUser u where u.name = :name or u.name = :otherName',
|
'select u from Doctrine\Tests\Models\CMS\CmsUser u where u.name = :name or u.name = :otherName',
|
||||||
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ WHERE (c0_.name = ? OR c0_.name = ?) AND c0_.id = 1"
|
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, c0_.email_id AS email_id4 FROM cms_users c0_ WHERE (c0_.name = ? OR c0_.name = ?) AND c0_.id = 1"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +75,7 @@ class CustomTreeWalkersTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
{
|
{
|
||||||
$this->assertSqlGeneration(
|
$this->assertSqlGeneration(
|
||||||
'select u from Doctrine\Tests\Models\CMS\CmsUser u where u.name = :name',
|
'select u from Doctrine\Tests\Models\CMS\CmsUser u where u.name = :name',
|
||||||
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ WHERE c0_.name = ? AND c0_.id = 1"
|
"SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, c0_.email_id AS email_id4 FROM cms_users c0_ WHERE c0_.name = ? AND c0_.id = 1"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
namespace Doctrine\Tests\ORM\Functional;
|
namespace Doctrine\Tests\ORM\Functional;
|
||||||
|
|
||||||
use Doctrine\Tests\Models\CMS\CmsUser,
|
use Doctrine\Tests\Models\CMS\CmsUser,
|
||||||
|
Doctrine\Tests\Models\CMS\CmsEmail,
|
||||||
Doctrine\Tests\Models\CMS\CmsAddress,
|
Doctrine\Tests\Models\CMS\CmsAddress,
|
||||||
Doctrine\Tests\Models\CMS\CmsPhonenumber;
|
Doctrine\Tests\Models\CMS\CmsPhonenumber;
|
||||||
|
|
||||||
@ -57,4 +58,37 @@ class OneToOneOrphanRemovalTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|||||||
|
|
||||||
$this->assertEquals(0, count($result), 'CmsAddress should be removed by orphanRemoval');
|
$this->assertEquals(0, count($result), 'CmsAddress should be removed by orphanRemoval');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testOrphanRemovalWhenUnlink()
|
||||||
|
{
|
||||||
|
$user = new CmsUser;
|
||||||
|
$user->status = 'dev';
|
||||||
|
$user->username = 'beberlei';
|
||||||
|
$user->name = 'Bejamin Eberlei';
|
||||||
|
|
||||||
|
$email = new CmsEmail;
|
||||||
|
$email->email = 'beberlei@domain.com';
|
||||||
|
|
||||||
|
$user->setEmail($email);
|
||||||
|
|
||||||
|
$this->_em->persist($user);
|
||||||
|
$this->_em->flush();
|
||||||
|
|
||||||
|
$userId = $user->getId();
|
||||||
|
|
||||||
|
$this->_em->clear();
|
||||||
|
|
||||||
|
$user = $this->_em->find('Doctrine\Tests\Models\CMS\CmsUser', $userId);
|
||||||
|
|
||||||
|
$user->setEmail(null);
|
||||||
|
|
||||||
|
$this->_em->persist($user);
|
||||||
|
$this->_em->flush();
|
||||||
|
$this->_em->clear();
|
||||||
|
|
||||||
|
$query = $this->_em->createQuery('SELECT e FROM Doctrine\Tests\Models\CMS\CmsEmail e');
|
||||||
|
$result = $query->getResult();
|
||||||
|
|
||||||
|
$this->assertEquals(0, count($result), 'CmsEmail should be removed by orphanRemoval');
|
||||||
|
}
|
||||||
}
|
}
|
@ -614,7 +614,7 @@ class SelectSqlGenerationTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u')
|
->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u')
|
||||||
->setMaxResults(10);
|
->setMaxResults(10);
|
||||||
|
|
||||||
$this->assertEquals('SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ LIMIT 10', $q->getSql());
|
$this->assertEquals('SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, c0_.email_id AS email_id4 FROM cms_users c0_ LIMIT 10', $q->getSql());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testLimitAndOffsetFromQueryClass()
|
public function testLimitAndOffsetFromQueryClass()
|
||||||
@ -624,7 +624,7 @@ class SelectSqlGenerationTest extends \Doctrine\Tests\OrmTestCase
|
|||||||
->setMaxResults(10)
|
->setMaxResults(10)
|
||||||
->setFirstResult(0);
|
->setFirstResult(0);
|
||||||
|
|
||||||
$this->assertEquals('SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3 FROM cms_users c0_ LIMIT 10 OFFSET 0', $q->getSql());
|
$this->assertEquals('SELECT c0_.id AS id0, c0_.status AS status1, c0_.username AS username2, c0_.name AS name3, c0_.email_id AS email_id4 FROM cms_users c0_ LIMIT 10 OFFSET 0', $q->getSql());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSizeFunction()
|
public function testSizeFunction()
|
||||||
|
@ -44,6 +44,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase
|
|||||||
'Doctrine\Tests\Models\CMS\CmsUser',
|
'Doctrine\Tests\Models\CMS\CmsUser',
|
||||||
'Doctrine\Tests\Models\CMS\CmsPhonenumber',
|
'Doctrine\Tests\Models\CMS\CmsPhonenumber',
|
||||||
'Doctrine\Tests\Models\CMS\CmsAddress',
|
'Doctrine\Tests\Models\CMS\CmsAddress',
|
||||||
|
'Doctrine\Tests\Models\CMS\CmsEmail',
|
||||||
'Doctrine\Tests\Models\CMS\CmsGroup',
|
'Doctrine\Tests\Models\CMS\CmsGroup',
|
||||||
'Doctrine\Tests\Models\CMS\CmsArticle',
|
'Doctrine\Tests\Models\CMS\CmsArticle',
|
||||||
'Doctrine\Tests\Models\CMS\CmsComment',
|
'Doctrine\Tests\Models\CMS\CmsComment',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user