From eab6bb13b9efb3e1c6d725368368de4d74b00946 Mon Sep 17 00:00:00 2001 From: wei <> Date: Mon, 7 May 2007 04:17:37 +0000 Subject: Update Active Record docs. --- .../simple_unit/ActiveRecord/FindBySqlTestCase.php | 29 ++++++++++++++++++-- .../ActiveRecord/ForeignObjectUpdateTest.php | 32 +++++++++++++++++++++- tests/simple_unit/DbCommon/SqliteColumnTest.php | 7 ++--- .../TableGateway/TableGatewayPgsqlTest.php | 2 +- 4 files changed, 62 insertions(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php b/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php index 953f83e6..7f22afc5 100644 --- a/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php +++ b/tests/simple_unit/ActiveRecord/FindBySqlTestCase.php @@ -1,7 +1,20 @@ -findBySql('SELECT * FROM departments'); $this->assertTrue(count($deps) > 0); } + + function test_find_by_sql_arb() + { + $sql = 'SELECT c.name as category, i.name as item + FROM items i, categories c + WHERE i.category_id = c.category_id LIMIT 2'; + $items = TActiveRecord::finder('SqlTest')->findBySql($sql); + + $sql = "SELECT users.*, 'hello' as another_value FROM users LIMIT 2"; + $users = TActiveRecord::finder('UserRecord2')->findBySql($sql); + var_dump($users); + } } ?> \ No newline at end of file diff --git a/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php b/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php index 77b9cdf3..ad64e4b6 100644 --- a/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php +++ b/tests/simple_unit/ActiveRecord/ForeignObjectUpdateTest.php @@ -47,7 +47,7 @@ class PlayerRecord extends BaseFkRecord public $team_name; public $team; - public $skills=array(); + private $_skills; public $profile; protected static $RELATIONS=array @@ -61,6 +61,26 @@ class PlayerRecord extends BaseFkRecord { return parent::finder($className); } + + public function getSkills() + { + if($this->_skills===null && $this->player_id !==null) + { + //lazy load the skill records + $this->setSkills($this->withSkills()->findByPk($this->player_id)->skills); + } + else if($this->_skills===null) + { + //create new TList; + $this->setSkills(new TList()); + } + return $this->_skills; + } + + public function setSkills($value) + { + $this->_skills = $value instanceof TList ? $value : new TList($value); + } } class ProfileRecord extends BaseFkRecord @@ -99,6 +119,8 @@ class SkillRecord extends BaseFkRecord { return parent::finder($className); } + + } class ForeignObjectUpdateTest extends UnitTestCase @@ -205,6 +227,14 @@ class ForeignObjectUpdateTest extends UnitTestCase $this->assertEqual($player3->skills[0]->name, 'Bash'); $this->assertEqual($player3->skills[1]->name, 'Push'); $this->assertEqual($player3->skills[2]->name, 'Skip'); + + //test lazy load + $player4 = PlayerRecord::finder()->findByAge(37); + $this->assertEqual(count($player4->skills), 3); + + $this->assertEqual($player4->skills[0]->name, 'Bash'); + $this->assertEqual($player4->skills[1]->name, 'Skip'); + $this->assertEqual($player4->skills[2]->name, 'Push'); } } diff --git a/tests/simple_unit/DbCommon/SqliteColumnTest.php b/tests/simple_unit/DbCommon/SqliteColumnTest.php index 6567106c..36a4baab 100644 --- a/tests/simple_unit/DbCommon/SqliteColumnTest.php +++ b/tests/simple_unit/DbCommon/SqliteColumnTest.php @@ -1,5 +1,4 @@ -meta_data()->getTableInfo('foo'); + //$table = $this->meta_data()->getTableInfo('foo'); //var_dump($table); } function test_table() { $conn = new TDbConnection('sqlite:c:/test.db'); - $table = new TTableGateway('Accounts', $conn); + //$table = new TTableGateway('Accounts', $conn); // var_dump($table->findAll()->readAll()); } } diff --git a/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php index 973e8d21..4d1077f7 100644 --- a/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php +++ b/tests/simple_unit/TableGateway/TableGatewayPgsqlTest.php @@ -48,7 +48,7 @@ class TableGatewayPgsqlTest extends BaseGatewayTest $results = $this->getGateway()->findAll('true')->readAll(); $this->assertEqual(count($results), 2); - $result = $this->getGateway()->findBySql('SELECT username FROM address WHERE phone = ?', '45233')->read(); + $result = $this->getGateway()->findAllBySql('SELECT username FROM address WHERE phone = ?', '45233')->read(); $this->assertEqual($result['username'], 'record2'); } -- cgit v1.2.3