2011-03-29 22:17:44 +04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Doctrine\Tests\ORM\Functional;
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../../TestInit.php';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Functional Query tests.
|
|
|
|
*
|
|
|
|
* @group DDC-692
|
|
|
|
*/
|
|
|
|
class ReadOnlyTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
|
|
{
|
|
|
|
protected function setUp()
|
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
|
2012-02-20 12:36:35 +04:00
|
|
|
try {
|
|
|
|
$this->_schemaTool->createSchema(array(
|
|
|
|
$this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\ReadOnlyEntity'),
|
|
|
|
));
|
|
|
|
} catch(\Exception $e) {
|
|
|
|
}
|
2011-03-29 22:17:44 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testReadOnlyEntityNeverChangeTracked()
|
|
|
|
{
|
|
|
|
$readOnly = new ReadOnlyEntity("Test1", 1234);
|
|
|
|
$this->_em->persist($readOnly);
|
|
|
|
$this->_em->flush();
|
|
|
|
|
|
|
|
$readOnly->name = "Test2";
|
2011-10-30 01:58:09 +04:00
|
|
|
$readOnly->numericValue = 4321;
|
2011-03-29 22:17:44 +04:00
|
|
|
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
|
|
|
|
|
|
|
$dbReadOnly = $this->_em->find('Doctrine\Tests\ORM\Functional\ReadOnlyEntity', $readOnly->id);
|
|
|
|
$this->assertEquals("Test1", $dbReadOnly->name);
|
2011-10-30 01:58:09 +04:00
|
|
|
$this->assertEquals(1234, $dbReadOnly->numericValue);
|
2011-03-29 22:17:44 +04:00
|
|
|
}
|
2012-02-20 12:36:35 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @group DDC-1659
|
|
|
|
*/
|
|
|
|
public function testClearReadOnly()
|
|
|
|
{
|
|
|
|
$readOnly = new ReadOnlyEntity("Test1", 1234);
|
|
|
|
$this->_em->persist($readOnly);
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->getUnitOfWork()->markReadOnly($readOnly);
|
|
|
|
|
|
|
|
$this->_em->clear();
|
|
|
|
|
|
|
|
$this->assertFalse($this->_em->getUnitOfWork()->isReadOnly($readOnly));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @group DDC-1659
|
|
|
|
*/
|
|
|
|
public function testClearEntitiesReadOnly()
|
|
|
|
{
|
|
|
|
$readOnly = new ReadOnlyEntity("Test1", 1234);
|
|
|
|
$this->_em->persist($readOnly);
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->getUnitOfWork()->markReadOnly($readOnly);
|
|
|
|
|
|
|
|
$this->_em->clear(get_class($readOnly));
|
|
|
|
|
|
|
|
$this->assertFalse($this->_em->getUnitOfWork()->isReadOnly($readOnly));
|
|
|
|
}
|
2011-03-29 22:17:44 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Entity(readOnly=true)
|
|
|
|
*/
|
|
|
|
class ReadOnlyEntity
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Id @GeneratedValue @Column(type="integer")
|
|
|
|
* @var int
|
|
|
|
*/
|
|
|
|
public $id;
|
|
|
|
/** @column(type="string") */
|
|
|
|
public $name;
|
|
|
|
/** @Column(type="integer") */
|
2011-10-30 01:58:09 +04:00
|
|
|
public $numericValue;
|
2011-03-29 22:17:44 +04:00
|
|
|
|
|
|
|
public function __construct($name, $number)
|
|
|
|
{
|
|
|
|
$this->name = $name;
|
2011-10-30 01:58:09 +04:00
|
|
|
$this->numericValue = $number;
|
2011-03-29 22:17:44 +04:00
|
|
|
}
|
2012-02-20 12:36:35 +04:00
|
|
|
}
|