2011-06-25 16:38:44 +04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Doctrine\Tests\ORM\Functional\Ticket;
|
|
|
|
|
|
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
|
|
use Doctrine\Tests\Models\CMS\CmsEmployee;
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../../../TestInit.php';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group DDC-1228
|
|
|
|
* @group DDC-1226
|
|
|
|
*/
|
|
|
|
class DDC1228Test extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
|
|
{
|
|
|
|
public function setUp()
|
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
try {
|
|
|
|
$this->_schemaTool->createSchema(array(
|
|
|
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1228User'),
|
|
|
|
$this->_em->getClassMetadata(__NAMESPACE__ . '\\DDC1228Profile'),
|
|
|
|
));
|
2011-10-30 01:58:09 +04:00
|
|
|
} catch(\Exception $e) {
|
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
}
|
|
|
|
}
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
public function testOneToOnePersist()
|
|
|
|
{
|
|
|
|
$user = new DDC1228User;
|
|
|
|
$profile = new DDC1228Profile();
|
|
|
|
$profile->name = "Foo";
|
|
|
|
$user->profile = $profile;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->_em->persist($user);
|
|
|
|
$this->_em->persist($profile);
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$user = $this->_em->find(__NAMESPACE__ . '\\DDC1228User', $user->id);
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->assertFalse($user->getProfile()->__isInitialized__, "Proxy is not initialized");
|
|
|
|
$user->getProfile()->setName("Bar");
|
|
|
|
$this->assertTrue($user->getProfile()->__isInitialized__, "Proxy is not initialized");
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->assertEquals("Bar", $user->getProfile()->getName());
|
|
|
|
$this->assertEquals(array("id" => 1, "name" => "Foo"), $this->_em->getUnitOfWork()->getOriginalEntityData($user->getProfile()));
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$user = $this->_em->find(__NAMESPACE__ . '\\DDC1228User', $user->id);
|
|
|
|
$this->assertEquals("Bar", $user->getProfile()->getName());
|
|
|
|
}
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
public function testRefresh()
|
|
|
|
{
|
|
|
|
$user = new DDC1228User;
|
|
|
|
$profile = new DDC1228Profile();
|
|
|
|
$profile->name = "Foo";
|
|
|
|
$user->profile = $profile;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->_em->persist($user);
|
|
|
|
$this->_em->persist($profile);
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$user = $this->_em->getReference(__NAMESPACE__ . '\\DDC1228User', $user->id);
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$this->_em->refresh($user);
|
|
|
|
$user->name = "Baz";
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
$user = $this->_em->find(__NAMESPACE__ . '\\DDC1228User', $user->id);
|
|
|
|
$this->assertEquals("Baz", $user->name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Entity
|
|
|
|
*/
|
|
|
|
class DDC1228User
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Id @Column(type="integer") @GeneratedValue
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
public $id;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
/**
|
2011-10-30 01:58:09 +04:00
|
|
|
* @Column(type="string")
|
2011-06-25 16:38:44 +04:00
|
|
|
* @var string
|
|
|
|
*/
|
2011-10-30 01:58:09 +04:00
|
|
|
public $name = 'Bar';
|
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
/**
|
|
|
|
* @OneToOne(targetEntity="DDC1228Profile")
|
|
|
|
* @var Profile
|
|
|
|
*/
|
|
|
|
public $profile;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
|
|
|
public function getProfile()
|
2011-06-25 16:38:44 +04:00
|
|
|
{
|
|
|
|
return $this->profile;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Entity
|
|
|
|
*/
|
|
|
|
class DDC1228Profile
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Id @Column(type="integer") @GeneratedValue
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
public $id;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
/**
|
|
|
|
* @column(type="string")
|
|
|
|
* @var string
|
|
|
|
*/
|
|
|
|
public $name;
|
2011-10-30 01:58:09 +04:00
|
|
|
|
2011-06-25 16:38:44 +04:00
|
|
|
public function getName()
|
|
|
|
{
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setName($name)
|
|
|
|
{
|
|
|
|
$this->name = $name;
|
|
|
|
}
|
|
|
|
}
|