3 namespace Doctrine\Tests\ORM;
5 require_once __DIR__ . '/../TestInit.php';
7 class EntityManagerTest extends \Doctrine\Tests\OrmTestCase
14 $this->_em = $this->_getTestEntityManager();
20 public function testIsOpen()
22 $this->assertTrue($this->_em->isOpen());
24 $this->assertFalse($this->_em->isOpen());
27 public function testGetConnection()
29 $this->assertInstanceOf('Doctrine\DBAL\Connection', $this->_em->getConnection());
32 public function testGetMetadataFactory()
34 $this->assertInstanceOf('Doctrine\ORM\Mapping\ClassMetadataFactory', $this->_em->getMetadataFactory());
37 public function testGetConfiguration()
39 $this->assertInstanceOf('Doctrine\ORM\Configuration', $this->_em->getConfiguration());
42 public function testGetUnitOfWork()
44 $this->assertInstanceOf('Doctrine\ORM\UnitOfWork', $this->_em->getUnitOfWork());
47 public function testGetProxyFactory()
49 $this->assertInstanceOf('Doctrine\ORM\Proxy\ProxyFactory', $this->_em->getProxyFactory());
52 public function testGetEventManager()
54 $this->assertInstanceOf('Doctrine\Common\EventManager', $this->_em->getEventManager());
57 public function testCreateNativeQuery()
59 $rsm = new \Doctrine\ORM\Query\ResultSetMapping();
60 $query = $this->_em->createNativeQuery('SELECT foo', $rsm);
62 $this->assertSame('SELECT foo', $query->getSql());
65 public function testCreateQueryBuilder()
67 $this->assertInstanceOf('Doctrine\ORM\QueryBuilder', $this->_em->createQueryBuilder());
70 public function testCreateQueryBuilderAliasValid()
72 $q = $this->_em->createQueryBuilder()
73 ->select('u')->from('Doctrine\Tests\Models\CMS\CmsUser', 'u');
76 $this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q->getQuery()->getDql());
77 $this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q2->getQuery()->getDql());
81 $this->assertEquals('SELECT u FROM Doctrine\Tests\Models\CMS\CmsUser u', $q3->getQuery()->getDql());
84 public function testCreateQuery_DqlIsOptional()
86 $this->assertInstanceOf('Doctrine\ORM\Query', $this->_em->createQuery());
89 public function testGetPartialReference()
91 $user = $this->_em->getPartialReference('Doctrine\Tests\Models\CMS\CmsUser', 42);
92 $this->assertTrue($this->_em->contains($user));
93 $this->assertEquals(42, $user->id);
94 $this->assertNull($user->getName());
97 public function testCreateQuery()
99 $q = $this->_em->createQuery('SELECT 1');
100 $this->assertInstanceOf('Doctrine\ORM\Query', $q);
101 $this->assertEquals('SELECT 1', $q->getDql());
104 static public function dataMethodsAffectedByNoObjectArguments()
116 * @dataProvider dataMethodsAffectedByNoObjectArguments
118 public function testThrowsExceptionOnNonObjectValues($methodName) {
119 $this->setExpectedException('Doctrine\ORM\ORMInvalidArgumentException',
120 'EntityManager#'.$methodName.'() expects parameter 1 to be an entity object, NULL given.');
121 $this->_em->$methodName(null);
124 static public function dataAffectedByErrorIfClosedException()
136 * @dataProvider dataAffectedByErrorIfClosedException
137 * @param string $methodName
139 public function testAffectedByErrorIfClosedException($methodName)
141 $this->setExpectedException('Doctrine\ORM\ORMException', 'closed');
144 $this->_em->$methodName(new \stdClass());
150 public function testTransactionalAcceptsReturn()
152 $return = $this->_em->transactional(function ($em) {
156 $this->assertEquals('foo', $return);
159 public function testTransactionalAcceptsVariousCallables()
161 $this->assertSame('callback', $this->_em->transactional(array($this, 'transactionalCallback')));
164 public function testTransactionalThrowsInvalidArgumentExceptionIfNonCallablePassed()
166 $this->setExpectedException('InvalidArgumentException', 'Expected argument of type "callable", got "object"');
167 $this->_em->transactional($this);
170 public function transactionalCallback($em)
172 $this->assertSame($this->_em, $em);