Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / orm / tests / Doctrine / Tests / ORM / EntityManagerTest.php
diff --git a/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/EntityManagerTest.php b/vendor/doctrine/orm/tests/Doctrine/Tests/ORM/EntityManagerTest.php
new file mode 100644 (file)
index 0000000..7de9213
--- /dev/null
@@ -0,0 +1,175 @@
+<?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';
+    }
+}