3 namespace Doctrine\Tests\ORM\Functional;
5 use Doctrine\Tests\Models\CMS\CmsUser;
7 class UnitOfWorkLifecycleTest extends \Doctrine\Tests\OrmFunctionalTestCase
9 protected function setUp()
11 $this->useModelSet('cms');
15 public function testScheduleInsertManaged()
17 $user = new CmsUser();
18 $user->username = "beberlei";
19 $user->name = "Benjamin";
20 $user->status = "active";
21 $this->_em->persist($user);
24 $this->setExpectedException("Doctrine\ORM\ORMInvalidArgumentException", "A managed+dirty entity Doctrine\Tests\Models\CMS\CmsUser");
25 $this->_em->getUnitOfWork()->scheduleForInsert($user);
28 public function testScheduleInsertDeleted()
30 $user = new CmsUser();
31 $user->username = "beberlei";
32 $user->name = "Benjamin";
33 $user->status = "active";
34 $this->_em->persist($user);
37 $this->_em->remove($user);
39 $this->setExpectedException("Doctrine\ORM\ORMInvalidArgumentException", "Removed entity Doctrine\Tests\Models\CMS\CmsUser");
40 $this->_em->getUnitOfWork()->scheduleForInsert($user);
43 public function testScheduleInsertTwice()
45 $user = new CmsUser();
46 $user->username = "beberlei";
47 $user->name = "Benjamin";
48 $user->status = "active";
50 $this->_em->getUnitOfWork()->scheduleForInsert($user);
52 $this->setExpectedException("Doctrine\ORM\ORMInvalidArgumentException", "Entity Doctrine\Tests\Models\CMS\CmsUser");
53 $this->_em->getUnitOfWork()->scheduleForInsert($user);
56 public function testAddToIdentityMapWithoutIdentity()
58 $user = new CmsUser();
60 $this->setExpectedException("Doctrine\ORM\ORMInvalidArgumentException", "The given entity of type 'Doctrine\Tests\Models\CMS\CmsUser' (Doctrine\Tests\Models\CMS\CmsUser@");
61 $this->_em->getUnitOfWork()->registerManaged($user, array(), array());
64 public function testMarkReadOnlyNonManaged()
66 $user = new CmsUser();
68 $this->setExpectedException("Doctrine\ORM\ORMInvalidArgumentException", "Only managed entities can be marked or checked as read only. But Doctrine\Tests\Models\CMS\CmsUser@");
69 $this->_em->getUnitOfWork()->markReadOnly($user);