. */ /** * Doctrine_Relation_OneToOne_TestCase * * @package Doctrine * @author Konsta Vesterinen * @license http://www.opensource.org/licenses/lgpl-license.php LGPL * @category Object Relational Mapping * @link www.phpdoctrine.com * @since 1.0 * @version $Revision$ */ class Doctrine_Relation_OneToMany_TestCase extends Doctrine_UnitTestCase { public function prepareData() { } public function prepareTables() { $this->tables = array('Entity', 'Phonenumber', 'Email', 'Policy', 'PolicyAsset', 'Role', 'Auth'); parent::prepareTables(); } public function testRelationParsing() { $table = $this->conn->getTable('Entity'); $rel = $table->getRelation('Phonenumber'); $this->assertTrue($rel instanceof Doctrine_Relation_ForeignKey); $rel = $table->getRelation('Email'); $this->assertTrue($rel instanceof Doctrine_Relation_LocalKey); } public function testRelationParsing2() { $table = $this->conn->getTable('Phonenumber'); $rel = $table->getRelation('Entity'); $this->assertTrue($rel instanceof Doctrine_Relation_LocalKey); } public function testRelationParsing3() { $table = $this->conn->getTable('Policy'); $rel = $table->getRelation('PolicyAssets'); $this->assertTrue($rel instanceof Doctrine_Relation_ForeignKey); } public function testRelationSaving() { $p = new Policy(); $p->policy_number = '123'; $a = new PolicyAsset(); $a->value = '123.13'; $p->PolicyAssets[] = $a; $p->save(); $this->assertEqual($a->policy_number, '123'); } public function testRelationSaving2() { $e = new Entity(); $e->name = 'test'; $e->save(); $nr = new Phonenumber(); $nr->phonenumber = '1234556'; $nr->save(); $nr->Entity = $e; } public function testRelationSaving3() { // create roles and user with role1 and role2 $this->conn->beginTransaction(); $role = new Role(); $role->name = 'role1'; $role->save(); $auth = new Auth(); $auth->name = 'auth1'; $auth->Role = $role; $auth->save(); $this->conn->commit(); $this->conn->clear(); $auths = $this->conn->query('FROM Auth a LEFT JOIN a.Role r'); $this->assertEqual($auths[0]->Role->name, 'role1'); } } class Role extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('name', 'string', 20, array('unique' => true)); } public function setUp() { $this->hasMany('Auth', array('local' => 'id', 'foreign' => 'roleid')); } } class Auth extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('roleid', 'integer', 10); $this->hasColumn('name', 'string', 50); } public function setUp() { $this->hasOne('Role', array('local' => 'roleid', 'foreign' => 'id')); } } class Policy extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('policy_number', 'integer', 11, array('unique' => true)); } public function setUp() { $this->hasMany('PolicyAsset as PolicyAssets', array('local' => 'policy_number', 'foreign' => 'policy_number')); $this->index('policy_number_index', array('fields' => array('policy_number'))); } } class PolicyAsset extends Doctrine_Record { public function setTableDefinition() { $this->hasColumn('policy_number', 'integer', 11); $this->hasColumn('value', 'float', 10, array ('notblank' => true,)); } public function setUp() { $this->hasOne('Policy', array('foreign' => 'policy_number', 'local' => 'policy_number')); $this->index('policy_number_index', array('fields' => array('policy_number'))); } }