<?php require_once 'lib/DoctrineTestInit.php'; require_once 'lib/mocks/Doctrine_EntityManagerMock.php'; require_once 'lib/mocks/Doctrine_ConnectionMock.php'; require_once 'lib/mocks/Doctrine_ClassMetadataMock.php'; require_once 'lib/mocks/Doctrine_UnitOfWorkMock.php'; /** * EntityPersister tests. */ class Orm_EntityPersisterTest extends Doctrine_OrmTestCase { private $_connMock; private $_emMock; private $_idGenMock; private $_uowMock; protected function setUp() { parent::setUp(); $this->_connMock = new Doctrine_ConnectionMock(array()); $this->_emMock = Doctrine_EntityManagerMock::create($this->_connMock, 'persisterMockEM'); $this->_uowMock = new Doctrine_UnitOfWorkMock($this->_emMock); $this->_emMock->setUnitOfWork($this->_uowMock); $this->_idGenMock = new Doctrine_SequenceMock($this->_emMock); $this->_emMock->setIdGenerator('ForumUser', $this->_idGenMock); $this->_emMock->activate(); } public function testSimpleInsert() { $userPersister = new Doctrine_ORM_Persisters_StandardEntityPersister( $this->_emMock, $this->_emMock->getClassMetadata("ForumUser")); $avatarPersister = new Doctrine_ORM_Persisters_StandardEntityPersister( $this->_emMock, $this->_emMock->getClassMetadata("ForumAvatar")); $user = new ForumUser(); $user->username = "romanb"; $user->avatar = new ForumAvatar(); $this->_uowMock->setDataChangeSet($user, array( 'username' => array('' => 'romanb'), 'avatar' => array('' => $user->avatar))); //insert $avatarPersister->insert($user->avatar); $inserts = $this->_connMock->getInserts(); //check $this->assertEquals(1, count($inserts)); $this->assertTrue(isset($inserts['ForumAvatar'])); $this->assertEquals(1, count($inserts['ForumAvatar'])); $this->assertEquals(null, $user->avatar->id); $user->avatar->id = 0; // Fake that we got an id //insert $userPersister->insert($user); $inserts = $this->_connMock->getInserts(); //check $this->assertEquals(2, count($inserts)); $this->assertEquals(null, $user->id); $this->assertTrue(isset($inserts['ForumUser'])); $this->assertEquals(1, count($inserts['ForumUser'])); $this->assertEquals(3, count($inserts['ForumUser'][0])); //username column $this->assertTrue(isset($inserts['ForumUser'][0]['username'])); $this->assertEquals('romanb', $inserts['ForumUser'][0]['username']); //avatar_id join column $this->assertTrue(isset($inserts['ForumUser'][0]['avatar_id'])); $this->assertEquals(0, $inserts['ForumUser'][0]['avatar_id']); //dtype discriminator column $this->assertTrue(isset($inserts['ForumUser'][0]['dtype'])); $this->assertEquals('user', $inserts['ForumUser'][0]['dtype']); } }