Changeset 4900

Show
Ignore:
Timestamp:
09/09/08 15:34:04 (10 months ago)
Author:
jasoneisen
Message:

Adding coverage for #1131

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/1.0/tests/Ticket/1131TestCase.php

    r4780 r4900  
    3838        $this->tables[] = 'Ticket_1131_User'; 
    3939        $this->tables[] = 'Ticket_1131_Group'; 
     40        $this->tables[] = 'Ticket_1131_Role'; 
    4041        parent::prepareTables(); 
    4142    } 
     
    4647        parent::prepareData(); 
    4748         
     49        $role = new Ticket_1131_Role(); 
     50        $role->name = 'Role One'; 
     51        $role->save(); 
     52        $this->role_one = $role->id; 
     53         
     54        $role = new Ticket_1131_Role(); 
     55        $role->name = 'Role Two'; 
     56        $role->save(); 
     57        $this->role_two = $role->id; 
     58         
    4859        $group = new Ticket_1131_Group(); 
     60        $group->role_id = $this->role_one; 
    4961        $group->name = 'Core Dev'; 
    5062        $group->save(); 
     
    5264        $user = new Ticket_1131_User(); 
    5365        $user->Group = $group; 
     66        $user->role_id = $this->role_two; 
    5467        $user->name = 'jwage'; 
    5568        $user->save(); 
    5669         
     70        $role->free(); 
    5771        $group->free(); 
    5872        $user->free(); 
    5973    } 
    6074 
    61     public function testTicket() 
     75    public function testOriginalTicket() 
    6276    { 
    6377        $user = Doctrine_Query::create() 
     
    6882        $this->assertFalse($user->get('group_id') instanceof Doctrine_Record); 
    6983    } 
     84     
     85    public function testOriginalTicketWithJoins() 
     86    { 
     87        $user = Doctrine_Query::create() 
     88            ->from('Ticket_1131_User u') 
     89            ->leftJoin('u.Group g') 
     90            ->where('u.id = ?')->fetchOne(array(1)); 
     91 
     92        $this->assertEqual($user->Group->id, 1); 
     93        $this->assertFalse($user->get('group_id') instanceof Doctrine_Record); 
     94    } 
     95     
     96    public function testOverloading() 
     97    { 
     98        $orig = Doctrine_Manager::getInstance()->getAttribute('auto_accessor_override'); 
     99        Doctrine_Manager::getInstance()->setAttribute('auto_accessor_override', true); 
     100         
     101        $user = Doctrine_Query::create() 
     102            ->from('Ticket_1131_User u') 
     103            ->where('u.id = ?')->fetchOne(array(1)); 
     104         
     105        $this->assertEqual($user->group_id, 1); 
     106        $this->assertEqual($user->get('group_id'), 1); 
     107        $this->assertFalse($user->get('group_id') instanceof Doctrine_Record); 
     108         
     109        $this->assertEqual($user->role_id, 2); 
     110        $this->assertEqual($user->get('role_id'), 2); 
     111        $this->assertFalse($user->get('role_id') instanceof Doctrine_Record); 
     112         
     113        $this->assertEqual($user->Group->id, 1); 
     114        $this->assertEqual($user->get('Group')->get('id'), 1); 
     115         
     116        $this->assertEqual($user->Role->id, 2); 
     117        $this->assertEqual($user->get('Role')->get('id'), 2); 
     118         
     119        Doctrine_Manager::getInstance()->setAttribute('auto_accessor_override', $orig); 
     120    } 
     121     
     122    public function testOverloadingWithJoins() 
     123    { 
     124        $orig = Doctrine_Manager::getInstance()->getAttribute('auto_accessor_override'); 
     125        Doctrine_Manager::getInstance()->setAttribute('auto_accessor_override', true); 
     126         
     127        $user = Doctrine_Query::create() 
     128            ->from('Ticket_1131_UserWithOverloading u') 
     129            ->leftJoin('u.Group g') 
     130            ->leftJoin('u.Role r') 
     131            ->addWhere('u.id = ?')->fetchOne(array(1)); 
     132         
     133        $this->assertEqual($user->group_id, 1); 
     134        $this->assertEqual($user->get('group_id'), 1); 
     135        $this->assertFalse($user->get('group_id') instanceof Doctrine_Record); 
     136         
     137        $this->assertEqual($user->role_id, 1); 
     138        $this->assertEqual($user->get('role_id'), 1); 
     139        $this->assertFalse($user->get('role_id') instanceof Doctrine_Record); 
     140         
     141        $this->assertEqual($user->Group->id, 1); 
     142        $this->assertEqual($user->get('Group')->get('id'), 1); 
     143         
     144        $this->assertEqual($user->Role->id, 1); 
     145        $this->assertEqual($user->get('Role')->get('id'), 1); 
     146         
     147        Doctrine_Manager::getInstance()->setAttribute('auto_accessor_override', $orig); 
     148    } 
    70149} 
    71150 
     
    75154    { 
    76155        $this->hasColumn('group_id', 'integer', 20, array( 
     156            'notnull' => false, 'default' => null 
     157        )); 
     158        $this->hasColumn('role_id', 'integer', 20, array( 
    77159            'notnull' => false, 'default' => null 
    78160        )); 
     
    86168            'foreign' => 'id' 
    87169        )); 
    88     } 
    89 } 
    90  
     170         
     171        $this->hasOne('Ticket_1131_Role as Role', array( 
     172            'local' => 'role_id', 
     173            'foreign' => 'id')); 
     174    } 
     175} 
     176 
     177class Ticket_1131_UserWithOverloading extends Ticket_1131_User 
     178{ 
     179    public function getRole() 
     180    { 
     181        return $this->Group->Role; 
     182    } 
     183     
     184    public function getRoleId() 
     185    { 
     186        return $this->Group->role_id; 
     187    } 
     188} 
    91189 
    92190class Ticket_1131_Group extends Doctrine_Record 
     
    94192    public function setTableDefinition() 
    95193    { 
     194        $this->hasColumn('role_id', 'integer', 20, array( 
     195            'notnull' => false, 'default' => null 
     196        )); 
    96197        $this->hasColumn('name', 'string', 255); 
    97198    } 
     
    99200    public function setUp() 
    100201    { 
     202        $this->hasOne('Ticket_1131_Role as Role', array( 
     203            'local' => 'role_id', 
     204            'foreign' => 'id')); 
     205         
    101206        $this->hasMany('Ticket_1131_User as Users', array( 
    102207            'local' => 'id', 
     
    105210    } 
    106211} 
     212 
     213class Ticket_1131_Role extends Doctrine_Record 
     214{ 
     215    public function setTableDefinition() 
     216    { 
     217        $this->hasColumn('name', 'string', 255); 
     218    } 
     219 
     220    public function setUp() 
     221    { 
     222        $this->hasMany('Ticket_1131_User as Users', array( 
     223            'local' => 'id', 
     224            'foreign' => 'role_id' 
     225        )); 
     226        $this->hasMany('Ticket_1131_Group as Groups', array( 
     227            'local' => 'id', 
     228            'foreign' => 'role_id' 
     229        )); 
     230    } 
     231}