2008-08-16 23:40:59 +04:00
|
|
|
<?php
|
|
|
|
|
2009-01-22 22:38:10 +03:00
|
|
|
namespace Doctrine\Tests\ORM;
|
|
|
|
|
2009-01-24 19:56:44 +03:00
|
|
|
require_once __DIR__ . '/../TestInit.php';
|
2008-08-16 23:40:59 +04:00
|
|
|
|
2009-01-22 22:38:10 +03:00
|
|
|
class EntityManagerTest extends \Doctrine\Tests\OrmTestCase
|
2009-01-04 19:15:32 +03:00
|
|
|
{
|
|
|
|
private $_em;
|
|
|
|
|
2009-02-18 10:59:11 +03:00
|
|
|
function setUp()
|
|
|
|
{
|
2009-01-04 19:15:32 +03:00
|
|
|
parent::setUp();
|
|
|
|
$this->_em = $this->_getTestEntityManager();
|
|
|
|
}
|
|
|
|
|
2010-12-03 19:44:24 +03:00
|
|
|
/**
|
|
|
|
* @group DDC-899
|
|
|
|
*/
|
|
|
|
public function testIsOpen()
|
|
|
|
{
|
|
|
|
$this->assertTrue($this->_em->isOpen());
|
|
|
|
$this->_em->close();
|
|
|
|
$this->assertFalse($this->_em->isOpen());
|
|
|
|
}
|
|
|
|
|
2009-10-29 01:12:45 +03:00
|
|
|
public function testGetConnection()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\DBAL\Connection', $this->_em->getConnection());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testGetMetadataFactory()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\Mapping\ClassMetadataFactory', $this->_em->getMetadataFactory());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testGetConfiguration()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\Configuration', $this->_em->getConfiguration());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testGetUnitOfWork()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\UnitOfWork', $this->_em->getUnitOfWork());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testGetProxyFactory()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\Proxy\ProxyFactory', $this->_em->getProxyFactory());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testGetEventManager()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\Common\EventManager', $this->_em->getEventManager());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public function testCreateNativeQuery()
|
|
|
|
{
|
|
|
|
$rsm = new \Doctrine\ORM\Query\ResultSetMapping();
|
|
|
|
$query = $this->_em->createNativeQuery('SELECT foo', $rsm);
|
|
|
|
|
|
|
|
$this->assertSame('SELECT foo', $query->getSql());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testCreateQueryBuilder()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\QueryBuilder', $this->_em->createQueryBuilder());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
2010-02-22 02:26:42 +03:00
|
|
|
|
2010-01-04 19:37:39 +03:00
|
|
|
public function testCreateQueryBuilderAliasValid()
|
|
|
|
{
|
|
|
|
$q = $this->_em->createQueryBuilder()
|
|
|
|
->select('u')->from('Doctrine\Tests\Models\CMS\CmsUser', 'u');
|
|
|
|
$q2 = clone $q;
|
2010-02-22 02:26:42 +03:00
|
|
|
|
2010-01-04 19:37:39 +03:00
|
|
|
$this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q->getQuery()->getDql());
|
|
|
|
$this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q2->getQuery()->getDql());
|
2010-02-22 02:26:42 +03:00
|
|
|
|
2010-01-04 19:37:39 +03:00
|
|
|
$q3 = clone $q;
|
2010-02-22 02:26:42 +03:00
|
|
|
|
2010-01-04 19:37:39 +03:00
|
|
|
$this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q3->getQuery()->getDql());
|
|
|
|
}
|
2009-10-29 01:12:45 +03:00
|
|
|
|
|
|
|
public function testCreateQuery_DqlIsOptional()
|
|
|
|
{
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\Query', $this->_em->createQuery());
|
2009-10-29 01:12:45 +03:00
|
|
|
}
|
|
|
|
|
2010-07-20 16:20:13 +04:00
|
|
|
public function testGetPartialReference()
|
|
|
|
{
|
|
|
|
$user = $this->_em->getPartialReference('Doctrine\Tests\Models\CMS\CmsUser', 42);
|
|
|
|
$this->assertTrue($this->_em->contains($user));
|
|
|
|
$this->assertEquals(42, $user->id);
|
|
|
|
$this->assertNull($user->getName());
|
|
|
|
}
|
|
|
|
|
2009-10-29 01:12:45 +03:00
|
|
|
public function testCreateQuery()
|
|
|
|
{
|
|
|
|
$q = $this->_em->createQuery('SELECT 1');
|
2011-07-26 13:38:09 +04:00
|
|
|
$this->assertInstanceOf('Doctrine\ORM\Query', $q);
|
2009-10-29 01:12:45 +03:00
|
|
|
$this->assertEquals('SELECT 1', $q->getDql());
|
|
|
|
}
|
|
|
|
|
2010-02-22 02:26:42 +03:00
|
|
|
static public function dataMethodsAffectedByNoObjectArguments()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
array('persist'),
|
|
|
|
array('remove'),
|
|
|
|
array('merge'),
|
|
|
|
array('refresh'),
|
|
|
|
array('detach')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider dataMethodsAffectedByNoObjectArguments
|
|
|
|
*/
|
|
|
|
public function testThrowsExceptionOnNonObjectValues($methodName) {
|
2011-12-22 17:05:11 +04:00
|
|
|
$this->setExpectedException('Doctrine\ORM\ORMInvalidArgumentException',
|
|
|
|
'EntityManager#'.$methodName.'() expects parameter 1 to be an entity object, NULL given.');
|
2010-02-22 02:26:42 +03:00
|
|
|
$this->_em->$methodName(null);
|
|
|
|
}
|
|
|
|
|
2009-10-29 01:12:45 +03:00
|
|
|
static public function dataAffectedByErrorIfClosedException()
|
|
|
|
{
|
|
|
|
return array(
|
|
|
|
array('flush'),
|
|
|
|
array('persist'),
|
|
|
|
array('remove'),
|
|
|
|
array('merge'),
|
|
|
|
array('refresh'),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dataProvider dataAffectedByErrorIfClosedException
|
|
|
|
* @param string $methodName
|
|
|
|
*/
|
|
|
|
public function testAffectedByErrorIfClosedException($methodName)
|
|
|
|
{
|
2009-12-18 16:20:22 +03:00
|
|
|
$this->setExpectedException('Doctrine\ORM\ORMException', 'closed');
|
2009-10-29 01:12:45 +03:00
|
|
|
|
|
|
|
$this->_em->close();
|
|
|
|
$this->_em->$methodName(new \stdClass());
|
|
|
|
}
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2011-04-26 01:32:43 +04:00
|
|
|
/**
|
|
|
|
* @group DDC-1125
|
|
|
|
*/
|
|
|
|
public function testTransactionalAcceptsReturn()
|
|
|
|
{
|
|
|
|
$return = $this->_em->transactional(function ($em) {
|
|
|
|
return 'foo';
|
|
|
|
});
|
2011-12-20 01:56:19 +04:00
|
|
|
|
2011-04-26 01:32:43 +04:00
|
|
|
$this->assertEquals('foo', $return);
|
|
|
|
}
|
2012-06-16 15:19:50 +04:00
|
|
|
|
|
|
|
public function testTransactionalAcceptsVariousCallables()
|
|
|
|
{
|
|
|
|
$this->assertSame('callback', $this->_em->transactional(array($this, 'transactionalCallback')));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testTransactionalThrowsInvalidArgumentExceptionIfNonCallablePassed()
|
|
|
|
{
|
|
|
|
$this->setExpectedException('InvalidArgumentException', 'Expected argument of type "callable", got "object"');
|
|
|
|
$this->_em->transactional($this);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function transactionalCallback($em)
|
|
|
|
{
|
|
|
|
$this->assertSame($this->_em, $em);
|
|
|
|
return 'callback';
|
|
|
|
}
|
|
|
|
}
|