EntityPersisterTest.php 2.75 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';
romanb's avatar
romanb committed
6 7 8 9 10 11 12 13 14

/**
 * EntityPersister tests.
 */
class Orm_EntityPersisterTest extends Doctrine_OrmTestCase
{
    private $_persister; // SUT
    private $_connMock;
    private $_emMock;
romanb's avatar
romanb committed
15 16
    private $_idGenMock;
    private $classMetadataMock;
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 22 23 24 25
        $this->_emMock = Doctrine_EntityManagerMock::create($this->_connMock, 'persisterMockEM');
        $this->_idGenMock = new Doctrine_SequenceMock($this->_emMock);
        $this->_classMetadataMock = new Doctrine_ClassMetadataMock("ForumUser", $this->_emMock);
        $this->_classMetadataMock->setIdGenerator($this->_idGenMock);
        $this->_connMock->setDatabasePlatform(new Doctrine_DatabasePlatformMock());        
romanb's avatar
romanb committed
26
        $this->_persister = new Doctrine_ORM_Persisters_StandardEntityPersister(
romanb's avatar
romanb committed
27
                $this->_emMock, $this->_emMock->getClassMetadata("ForumUser"));
romanb's avatar
romanb committed
28 29
                
        $this->_emMock->activate();
romanb's avatar
romanb committed
30 31
    }
    
32
    public function testInsert() {
romanb's avatar
romanb committed
33 34 35 36
        $user = new ForumUser();
        $user->username = "romanb";
        $user->avatar = new ForumAvatar();
        
romanb's avatar
romanb committed
37
        //insert
38 39 40 41
        $this->_persister->insert($user->avatar);
        $inserts = $this->_connMock->getInserts();
        //check
        $this->assertEquals(1, count($inserts));
romanb's avatar
romanb committed
42 43
        $this->assertEquals(null, $user->avatar->id);
        $user->avatar->id = 0; // fake we got id
44 45 46
        $this->assertTrue(isset($inserts['forum_avatar']));
        $this->assertEquals(1, count($inserts['forum_avatar']));
        $this->assertTrue(empty($inserts['forum_avatar'][0]));
romanb's avatar
romanb committed
47
        
romanb's avatar
romanb committed
48
        //insert
49
        $this->_persister->insert($user);
romanb's avatar
romanb committed
50
        $inserts = $this->_connMock->getInserts();
51 52
        //check
        $this->assertEquals(2, count($inserts));
romanb's avatar
romanb committed
53
        $this->assertEquals(null, $user->id);
romanb's avatar
romanb committed
54 55
        $this->assertTrue(isset($inserts['forum_user']));
        $this->assertEquals(1, count($inserts['forum_user']));
56 57
        $this->assertEquals(3, count($inserts['forum_user'][0]));
        //username column
romanb's avatar
romanb committed
58 59
        $this->assertTrue(isset($inserts['forum_user'][0]['username']));
        $this->assertEquals('romanb', $inserts['forum_user'][0]['username']);
60 61 62 63 64 65
        //avatar_id join column
        $this->assertTrue(isset($inserts['forum_user'][0]['avatar_id']));
        $this->assertEquals(0, $inserts['forum_user'][0]['avatar_id']);
        //dtype discriminator column
        $this->assertTrue(isset($inserts['forum_user'][0]['dtype']));
        $this->assertEquals('user', $inserts['forum_user'][0]['dtype']);
romanb's avatar
romanb committed
66 67 68
    }
    
}