1
0
mirror of synced 2024-12-15 07:36:03 +03:00
doctrine2/tests/Doctrine/Tests/ORM/EntityManagerTest.php

176 lines
5.0 KiB
PHP

<?php
namespace Doctrine\Tests\ORM;
require_once __DIR__ . '/../TestInit.php';
class EntityManagerTest extends \Doctrine\Tests\OrmTestCase
{
private $_em;
function setUp()
{
parent::setUp();
$this->_em = $this->_getTestEntityManager();
}
/**
* @group DDC-899
*/
public function testIsOpen()
{
$this->assertTrue($this->_em->isOpen());
$this->_em->close();
$this->assertFalse($this->_em->isOpen());
}
public function testGetConnection()
{
$this->assertInstanceOf('Doctrine\DBAL\Connection', $this->_em->getConnection());
}
public function testGetMetadataFactory()
{
$this->assertInstanceOf('Doctrine\ORM\Mapping\ClassMetadataFactory', $this->_em->getMetadataFactory());
}
public function testGetConfiguration()
{
$this->assertInstanceOf('Doctrine\ORM\Configuration', $this->_em->getConfiguration());
}
public function testGetUnitOfWork()
{
$this->assertInstanceOf('Doctrine\ORM\UnitOfWork', $this->_em->getUnitOfWork());
}
public function testGetProxyFactory()
{
$this->assertInstanceOf('Doctrine\ORM\Proxy\ProxyFactory', $this->_em->getProxyFactory());
}
public function testGetEventManager()
{
$this->assertInstanceOf('Doctrine\Common\EventManager', $this->_em->getEventManager());
}
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()
{
$this->assertInstanceOf('Doctrine\ORM\QueryBuilder', $this->_em->createQueryBuilder());
}
public function testCreateQueryBuilderAliasValid()
{
$q = $this->_em->createQueryBuilder()
->select('u')->from('Doctrine\Tests\Models\CMS\CmsUser', 'u');
$q2 = clone $q;
$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());
$q3 = clone $q;
$this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q3->getQuery()->getDql());
}
public function testCreateQuery_DqlIsOptional()
{
$this->assertInstanceOf('Doctrine\ORM\Query', $this->_em->createQuery());
}
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());
}
public function testCreateQuery()
{
$q = $this->_em->createQuery('SELECT 1');
$this->assertInstanceOf('Doctrine\ORM\Query', $q);
$this->assertEquals('SELECT 1', $q->getDql());
}
static public function dataMethodsAffectedByNoObjectArguments()
{
return array(
array('persist'),
array('remove'),
array('merge'),
array('refresh'),
array('detach')
);
}
/**
* @dataProvider dataMethodsAffectedByNoObjectArguments
*/
public function testThrowsExceptionOnNonObjectValues($methodName) {
$this->setExpectedException('Doctrine\ORM\ORMInvalidArgumentException',
'EntityManager#'.$methodName.'() expects parameter 1 to be an entity object, NULL given.');
$this->_em->$methodName(null);
}
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)
{
$this->setExpectedException('Doctrine\ORM\ORMException', 'closed');
$this->_em->close();
$this->_em->$methodName(new \stdClass());
}
/**
* @group DDC-1125
*/
public function testTransactionalAcceptsReturn()
{
$return = $this->_em->transactional(function ($em) {
return 'foo';
});
$this->assertEquals('foo', $return);
}
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';
}
}