Commit 10e3407e authored by romanb's avatar romanb

[2.0][DDC-70] Added some EntityManager tests provided by beberlei.

parent f572c372
...@@ -449,6 +449,7 @@ class EntityManager ...@@ -449,6 +449,7 @@ class EntityManager
*/ */
public function merge($entity) public function merge($entity)
{ {
$this->_errorIfClosed();
return $this->_unitOfWork->merge($entity); return $this->_unitOfWork->merge($entity);
} }
...@@ -461,6 +462,7 @@ class EntityManager ...@@ -461,6 +462,7 @@ class EntityManager
*/ */
public function copy($entity, $deep = false) public function copy($entity, $deep = false)
{ {
$this->_errorIfClosed();
throw DoctrineException::notImplemented(__FUNCTION__, __CLASS__); throw DoctrineException::notImplemented(__FUNCTION__, __CLASS__);
} }
......
...@@ -22,5 +22,124 @@ class EntityManagerTest extends \Doctrine\Tests\OrmTestCase ...@@ -22,5 +22,124 @@ class EntityManagerTest extends \Doctrine\Tests\OrmTestCase
$this->fail("Setting invalid flushmode did not trigger exception."); $this->fail("Setting invalid flushmode did not trigger exception.");
} catch (\Doctrine\ORM\EntityManagerException $expected) {} } catch (\Doctrine\ORM\EntityManagerException $expected) {}
$this->_em->setFlushMode($prev); $this->_em->setFlushMode($prev);
} }
public function testGetConnection()
{
$this->assertType('\Doctrine\DBAL\Connection', $this->_em->getConnection());
}
public function testGetMetadataFactory()
{
$this->assertType('\Doctrine\ORM\Mapping\ClassMetadataFactory', $this->_em->getMetadataFactory());
}
public function testGetConfiguration()
{
$this->assertType('\Doctrine\ORM\Configuration', $this->_em->getConfiguration());
}
public function testGetUnitOfWork()
{
$this->assertType('\Doctrine\ORM\UnitOfWork', $this->_em->getUnitOfWork());
}
public function testGetProxyFactory()
{
$this->assertType('\Doctrine\ORM\Proxy\ProxyFactory', $this->_em->getProxyFactory());
}
public function testGetEventManager()
{
$this->assertType('\Doctrine\Common\EventManager', $this->_em->getEventManager());
}
public function testGetDefaultFlushMode_OnCommit()
{
$this->assertEquals(\Doctrine\ORM\EntityManager::FLUSHMODE_COMMIT, $this->_em->getFlushMode());
}
public function testCommit_FlushModeOnCommit_FlushUnitOfWork()
{
$this->markTestSkipped('_unitOfWork is private, but EntityManager does not use getUnitofWork() all the time');
$uow = $this->getMock('\Doctrine\ORM\UnitOfWork', array(), array(), '', false);
$uow->expects($this->once())
->method('flush');
$this->_em->setUnitOfWork($uow);
$this->_em->setFlushMode(\Doctrine\ORM\EntityManager::FLUSHMODE_COMMIT);
$this->assertSame($uow, $this->_em->getUnitOfWork());
$this->_em->beginTransaction();
$this->_em->commit();
}
public function testCommit_FlushModeAuto_FlushUnitOfWork()
{
$this->markTestSkipped('_unitOfWork is private, but EntityManager does not use getUnitofWork() all the time');
$uow = $this->getMock('\Doctrine\ORM\UnitOfWork', array(), array(), '', false);
$uow->expects($this->once())
->method('flush');
$this->_em->setUnitOfWork($uow);
$this->_em->setFlushMode(\Doctrine\ORM\EntityManager::FLUSHMODE_AUTO);
$this->assertSame($uow, $this->_em->getUnitOfWork());
$this->_em->beginTransaction();
$this->_em->commit();
}
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->assertType('\Doctrine\ORM\QueryBuilder', $this->_em->createQueryBuilder());
}
public function testCreateQuery_DqlIsOptional()
{
$this->assertType('\Doctrine\ORM\Query', $this->_em->createQuery());
}
public function testCreateQuery()
{
$q = $this->_em->createQuery('SELECT 1');
$this->assertType('\Doctrine\ORM\Query', $q);
$this->assertEquals('SELECT 1', $q->getDql());
}
static public function dataAffectedByErrorIfClosedException()
{
return array(
array('flush'),
array('persist'),
array('remove'),
array('merge'),
array('refresh'),
array('copy'),
);
}
/**
* @dataProvider dataAffectedByErrorIfClosedException
* @param string $methodName
*/
public function testAffectedByErrorIfClosedException($methodName)
{
$this->setExpectedException('Doctrine\ORM\EntityManagerException', 'Closed');
$this->_em->close();
$this->_em->$methodName(new \stdClass());
}
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment