_schemaTool->createSchema(array( $this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsUser'), )); } catch (\Exception $e) { } $this->user = new CmsUser(); $this->user->username = 'ocramius'; $this->user->name = 'Marco'; $this->_em->persist($this->user); $this->_em->flush(); $this->_em->clear(); } /** * Verifies that a proxy can be successfully persisted and updated */ public function testPersistUpdate() { // Considering case (a) $persister = $this->_em->getUnitOfWork()->getEntityPersister('Doctrine\Tests\Models\CMS\CmsUser'); $proxy = new Proxy($persister, array()); $proxy->__isInitialized__ = true; $proxy->username = 'ocra'; $proxy->name = 'Marco'; $this->_em->persist($proxy); $this->_em->flush(); $this->assertNotNull($proxy->getId()); $proxy->name = 'Marco Pivetta'; $this ->_em ->getUnitOfWork() ->computeChangeSet($this->_em->getClassMetadata('Doctrine\Tests\Models\CMS\CmsUser'), $proxy); $this->assertNotEmpty($this->_em->getUnitOfWork()->getEntityChangeSet($proxy)); $this->assertEquals('Marco Pivetta', $this->_em->find('Doctrine\Tests\Models\CMS\CmsUser', $proxy->getId())->name); $this->_em->remove($proxy); $this->_em->flush(); } public function testEntityWithIdentifier() { // Considering case (b) $persister = $this->_em->getUnitOfWork()->getEntityPersister('Doctrine\Tests\Models\CMS\CmsUser'); $uninitializedProxy = new Proxy($persister, array('id' => $this->user->getId())); $uninitializedProxy->id = $this->user->getId(); $uninitializedProxy->username = 'ocra'; $uninitializedProxy->name = 'Marco Pivetta'; $this->_em->persist($uninitializedProxy); $this->_em->flush(); $this->assertEquals($this->user->getId(), $uninitializedProxy->getId()); $this->_em->remove($uninitializedProxy); $this->_em->flush(); } /** * Verifying that proxies can be used without problems as query parameters */ public function testProxyAsDqlParameterPersist() { $persister = $this->_em->getUnitOfWork()->getEntityPersister('Doctrine\Tests\Models\CMS\CmsUser'); $proxy = new Proxy($persister, array('id' => $this->user->getId())); $proxy->id = $this->user->getId(); $result = $this ->_em ->createQuery('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u WHERE u = ?1') ->setParameter(1, $proxy) ->getSingleResult(); $this->assertSame($this->user->getId(), $result->getId()); $this->_em->remove($proxy); $this->_em->flush(); } /** * Verifying that proxies can be used without problems as query parameters */ public function testFindWithProxyName() { $result = $this ->_em ->find('Doctrine\Tests\Proxies\__CG__\Doctrine\Tests\Models\CMS\CmsUser', $this->user->getId()); $this->assertSame($this->user->getId(), $result->getId()); $this->_em->clear(); $result = $this ->_em ->getReference('Doctrine\Tests\Proxies\__CG__\Doctrine\Tests\Models\CMS\CmsUser', $this->user->getId()); $this->assertSame($this->user->getId(), $result->getId()); $this->_em->clear(); $result = $this ->_em ->getRepository('Doctrine\Tests\Proxies\__CG__\Doctrine\Tests\Models\CMS\CmsUser') ->findOneBy(array('username' => $this->user->username)); $this->assertSame($this->user->getId(), $result->getId()); $this->_em->clear(); $result = $this ->_em ->createQuery('SELECT u FROM Doctrine\Tests\Proxies\__CG__\Doctrine\Tests\Models\CMS\CmsUser u WHERE u.id = ?1') ->setParameter(1, $this->user->getId()) ->getSingleResult(); $this->assertSame($this->user->getId(), $result->getId()); $this->_em->clear(); } protected function tearDown() { $this->_em->createQuery('DELETE FROM Doctrine\Tests\Models\CMS\CmsUser u')->execute(); } }