1<?php 2/* 3 * Test to ensure LocalKey Relations allow 0 for id value 4 */ 5class Doctrine_Ticket_982_TestCase extends Doctrine_UnitTestCase 6{ 7 public function prepareTables() 8 { 9 $this->tables = array(); 10 $this->tables[] = "T982_MyModel"; 11 parent::prepareTables(); 12 } 13 14 public function prepareData() 15 { 16 $myModelZero = new T982_MyModel(); 17 $myModelZero->id = 0; 18 $myModelZero->parentid = 0; 19 $myModelZero->save(); 20 $this->assertIdentical(0, $myModelZero->id); 21 22 $this->myModelOne = new T982_MyModel(); 23 $this->myModelOne->id = 1; 24 $this->myModelOne->parentid = 0; 25 $this->myModelOne->save(); 26 27 $this->myModelTwo = new T982_MyModel(); 28 $this->myModelTwo->id = 2; 29 $this->myModelTwo->parentid = 1; 30 $this->myModelTwo->save(); 31 } 32 33 public function testTicket() 34 { 35 $this->conn->getTable('T982_MyModel')->clear(); 36 37 $myModelZero = $this->conn->getTable('T982_MyModel')->find(0); 38 39 $this->assertIdentical($myModelZero->id, '0'); 40 $this->assertIdentical($myModelZero->parentid, '0'); 41 $this->assertTrue($myModelZero->parent->exists()); 42 $this->assertTrue(ctype_digit($myModelZero->parent->id)); 43 $this->assertIdentical($myModelZero, $myModelZero->parent); 44 $this->assertIdentical($myModelZero->parent->id, '0'); 45 $this->assertIdentical($myModelZero->parent->parentid, '0'); 46 47 $myModelOne = $this->conn->getTable('T982_MyModel')->find(1); 48 49 $this->assertIdentical($myModelOne->id, '1'); 50 $this->assertIdentical($myModelOne->parentid, '0'); 51 $this->assertTrue($myModelOne->parent->exists()); 52 $this->assertTrue(ctype_digit($myModelOne->parent->id)); 53 $this->assertIdentical($myModelOne->parent->id, '0'); 54 $this->assertIdentical($myModelOne->parent->parentid, '0'); 55 56 $myModelTwo = $this->conn->getTable('T982_MyModel')->find(2); 57 58 $this->assertIdentical($myModelTwo->id, '2'); 59 $this->assertIdentical($myModelTwo->parentid, '1'); 60 $this->assertIdentical($myModelTwo->parent->id, '1'); 61 $this->assertIdentical($myModelTwo->parent->parentid, '0'); 62 63 } 64} 65 66class T982_MyModel extends Doctrine_Record 67{ 68 public function setTableDefinition() 69 { 70 $this->hasColumn('id', 'integer', 4, array('primary' => true, 'notnull' => true)); 71 $this->hasColumn('parentid', 'integer', 4, array('notnull' => true)); 72 } 73 74 public function setUp() 75 { 76 $this->hasOne('T982_MyModel as parent', array('local' => 'parentid', 'foreign' => 'id')); 77 } 78 79}