EntityPersisterTest.php 2.95 KB
Newer Older
romanb's avatar
romanb committed
1 2 3 4
<?php
require_once 'lib/DoctrineTestInit.php';
require_once 'lib/mocks/Doctrine_EntityManagerMock.php';
require_once 'lib/mocks/Doctrine_ConnectionMock.php';
romanb's avatar
romanb committed
5
require_once 'lib/mocks/Doctrine_ClassMetadataMock.php';
6
require_once 'lib/mocks/Doctrine_UnitOfWorkMock.php';
romanb's avatar
romanb committed
7 8 9 10 11 12 13 14

/**
 * EntityPersister tests.
 */
class Orm_EntityPersisterTest extends Doctrine_OrmTestCase
{
    private $_connMock;
    private $_emMock;
romanb's avatar
romanb committed
15
    private $_idGenMock;
16
    private $_uowMock;
romanb's avatar
romanb committed
17 18 19 20
    
    protected function setUp() {
        parent::setUp();
        $this->_connMock = new Doctrine_ConnectionMock(array());
romanb's avatar
romanb committed
21
        $this->_emMock = Doctrine_EntityManagerMock::create($this->_connMock, 'persisterMockEM');
22 23
        $this->_uowMock = new Doctrine_UnitOfWorkMock($this->_emMock);
        $this->_emMock->setUnitOfWork($this->_uowMock);
romanb's avatar
romanb committed
24
        $this->_idGenMock = new Doctrine_SequenceMock($this->_emMock);
25
        $this->_emMock->setIdGenerator('ForumUser', $this->_idGenMock);
romanb's avatar
romanb committed
26 27
                
        $this->_emMock->activate();
romanb's avatar
romanb committed
28 29
    }
    
30 31 32 33 34 35
    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"));

romanb's avatar
romanb committed
36 37 38
        $user = new ForumUser();
        $user->username = "romanb";
        $user->avatar = new ForumAvatar();
39 40 41 42 43 44

        $this->_uowMock->setDataChangeSet($user, array(
                'username' => array('' => 'romanb'),
                'avatar' => array('' => $user->avatar)));


romanb's avatar
romanb committed
45
        //insert
46
        $avatarPersister->insert($user->avatar);
47 48 49
        $inserts = $this->_connMock->getInserts();
        //check
        $this->assertEquals(1, count($inserts));
romanb's avatar
romanb committed
50 51
        $this->assertTrue(isset($inserts['ForumAvatar']));
        $this->assertEquals(1, count($inserts['ForumAvatar']));
52 53 54
        $this->assertEquals(null, $user->avatar->id);
        $user->avatar->id = 0; // Fake that we got an id

romanb's avatar
romanb committed
55
        //insert
56
        $userPersister->insert($user);
romanb's avatar
romanb committed
57
        $inserts = $this->_connMock->getInserts();
58 59
        //check
        $this->assertEquals(2, count($inserts));
romanb's avatar
romanb committed
60
        $this->assertEquals(null, $user->id);
romanb's avatar
romanb committed
61 62 63
        $this->assertTrue(isset($inserts['ForumUser']));
        $this->assertEquals(1, count($inserts['ForumUser']));
        $this->assertEquals(3, count($inserts['ForumUser'][0]));
64
        //username column
romanb's avatar
romanb committed
65 66
        $this->assertTrue(isset($inserts['ForumUser'][0]['username']));
        $this->assertEquals('romanb', $inserts['ForumUser'][0]['username']);
67
        //avatar_id join column
romanb's avatar
romanb committed
68 69
        $this->assertTrue(isset($inserts['ForumUser'][0]['avatar_id']));
        $this->assertEquals(0, $inserts['ForumUser'][0]['avatar_id']);
70
        //dtype discriminator column
romanb's avatar
romanb committed
71 72
        $this->assertTrue(isset($inserts['ForumUser'][0]['dtype']));
        $this->assertEquals('user', $inserts['ForumUser'][0]['dtype']);
romanb's avatar
romanb committed
73 74 75
    }
    
}