2009-11-21 21:52:02 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Doctrine\Tests\ORM\Functional;
|
|
|
|
|
|
|
|
require_once __DIR__ . '/../../TestInit.php';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Tests basic operations on entities with default values.
|
|
|
|
*
|
|
|
|
* @author robo
|
|
|
|
*/
|
|
|
|
class DefaultValuesTest extends \Doctrine\Tests\OrmFunctionalTestCase
|
|
|
|
{
|
|
|
|
protected function setUp() {
|
|
|
|
parent::setUp();
|
|
|
|
try {
|
|
|
|
$this->_schemaTool->createSchema(array(
|
|
|
|
$this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\DefaultValueUser'),
|
|
|
|
$this->_em->getClassMetadata('Doctrine\Tests\ORM\Functional\DefaultValueAddress')
|
|
|
|
));
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
// Swallow all exceptions. We do not test the schema tool here.
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testSimpleDetachMerge() {
|
|
|
|
$user = new DefaultValueUser;
|
|
|
|
$user->name = 'romanb';
|
|
|
|
$this->_em->persist($user);
|
|
|
|
$this->_em->flush();
|
2010-04-21 01:20:42 +04:00
|
|
|
$this->_em->clear();
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
$userId = $user->id; // e.g. from $_REQUEST
|
|
|
|
$user2 = $this->_em->getReference(get_class($user), $userId);
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
$this->_em->flush();
|
2010-01-05 14:45:38 +03:00
|
|
|
$this->assertFalse($user2->__isInitialized__);
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
$a = new DefaultValueAddress;
|
|
|
|
$a->country = 'de';
|
|
|
|
$a->zip = '12345';
|
|
|
|
$a->city = 'Berlin';
|
|
|
|
$a->street = 'Sesamestreet';
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
$a->user = $user2;
|
|
|
|
$this->_em->persist($a);
|
|
|
|
$this->_em->flush();
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2010-01-05 14:45:38 +03:00
|
|
|
$this->assertFalse($user2->__isInitialized__);
|
2009-11-21 21:52:02 +03:00
|
|
|
$this->_em->clear();
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
$a2 = $this->_em->find(get_class($a), $a->id);
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\Tests\ORM\Functional\DefaultValueUser', $a2->getUser());
|
2009-11-21 21:52:02 +03:00
|
|
|
$this->assertEquals($userId, $a2->getUser()->getId());
|
|
|
|
$this->assertEquals('Poweruser', $a2->getUser()->type);
|
|
|
|
}
|
2011-10-15 13:52:41 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @group DDC-1386
|
|
|
|
*/
|
2013-03-11 04:08:58 +04:00
|
|
|
public function testGetPartialReferenceWithDefaultValueNotEvaluatedInFlush()
|
2011-10-15 13:52:41 +04:00
|
|
|
{
|
|
|
|
$user = new DefaultValueUser;
|
|
|
|
$user->name = 'romanb';
|
|
|
|
$user->type = 'Normaluser';
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2011-10-15 13:52:41 +04:00
|
|
|
$this->_em->persist($user);
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
|
|
|
|
|
|
|
$user = $this->_em->getPartialReference('Doctrine\Tests\ORM\Functional\DefaultValueUser', $user->id);
|
|
|
|
$this->assertTrue($this->_em->getUnitOfWork()->isReadOnly($user));
|
|
|
|
|
|
|
|
$this->_em->flush();
|
|
|
|
$this->_em->clear();
|
|
|
|
|
|
|
|
$user = $this->_em->find('Doctrine\Tests\ORM\Functional\DefaultValueUser', $user->id);
|
|
|
|
|
|
|
|
$this->assertEquals('Normaluser', $user->type);
|
|
|
|
}
|
2009-11-21 21:52:02 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Entity @Table(name="defaultvalueuser")
|
|
|
|
*/
|
|
|
|
class DefaultValueUser
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Id @Column(type="integer")
|
|
|
|
* @GeneratedValue(strategy="AUTO")
|
|
|
|
*/
|
|
|
|
public $id;
|
|
|
|
/**
|
|
|
|
* @Column(type="string")
|
|
|
|
*/
|
|
|
|
public $name = '';
|
|
|
|
/**
|
|
|
|
* @Column(type="string")
|
|
|
|
*/
|
|
|
|
public $type = 'Poweruser';
|
|
|
|
/**
|
|
|
|
* @OneToOne(targetEntity="DefaultValueAddress", mappedBy="user", cascade={"persist"})
|
|
|
|
*/
|
|
|
|
public $address;
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
public function getId() {return $this->id;}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* CmsAddress
|
|
|
|
*
|
|
|
|
* @Entity @Table(name="defaultvalueaddresses")
|
|
|
|
*/
|
|
|
|
class DefaultValueAddress
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @Column(type="integer")
|
|
|
|
* @Id @GeneratedValue(strategy="AUTO")
|
|
|
|
*/
|
|
|
|
public $id;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Column(type="string", length=50)
|
|
|
|
*/
|
|
|
|
public $country;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Column(type="string", length=50)
|
|
|
|
*/
|
|
|
|
public $zip;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @Column(type="string", length=50)
|
|
|
|
*/
|
|
|
|
public $city;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Testfield for Schema Updating Tests.
|
|
|
|
*/
|
|
|
|
public $street;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @OneToOne(targetEntity="DefaultValueUser")
|
|
|
|
* @JoinColumn(name="user_id", referencedColumnName="id")
|
|
|
|
*/
|
|
|
|
public $user;
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2009-11-21 21:52:02 +03:00
|
|
|
public function getUser() {return $this->user;}
|
|
|
|
}
|