Skip to content

Instantly share code, notes, and snippets.

@doctrinebot
Created December 13, 2015 18:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save doctrinebot/891b18924cf754198a02 to your computer and use it in GitHub Desktop.
Save doctrinebot/891b18924cf754198a02 to your computer and use it in GitHub Desktop.
Attachments to Doctrine Jira Issue DDC-70 - https://github.com/doctrine/doctrine2/issues/5212
Index: tests/Doctrine/Tests/ORM/EntityManagerTest.php
===================================================================
--- tests/Doctrine/Tests/ORM/EntityManagerTest.php (revision 6579)
+++ tests/Doctrine/Tests/ORM/EntityManagerTest.php (working copy)
@@ -22,5 +22,124 @@
$this->fail("Setting invalid flushmode did not trigger exception.");
} catch (\Doctrine\ORM\EntityManagerException $expected) {}
$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
Index: lib/Doctrine/ORM/EntityManager.php
===================================================================
--- lib/Doctrine/ORM/EntityManager.php (revision 6579)
+++ lib/Doctrine/ORM/EntityManager.php (working copy)
@@ -449,6 +449,7 @@
*/
public function merge($entity)
{
+ $this->_errorIfClosed();
return $this->_unitOfWork->merge($entity);
}
@@ -461,6 +462,7 @@
*/
public function copy($entity, $deep = false)
{
+ $this->_errorIfClosed();
throw DoctrineException::notImplemented(__FUNCTION__, __CLASS__);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment