. */ /** * Doctrine_Relation_Parser_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_Parser_TestCase extends Doctrine_UnitTestCase { public function testPendingRelations() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $p = array('type' => Doctrine_Relation::ONE, 'local' => 'email_id', 'definer' => 'User'); $r->bind('Email', $p); $this->assertEqual($r->getPendingRelation('Email'), array('type' => Doctrine_Relation::ONE, 'local' => 'email_id', 'class' => 'Email', 'alias' => 'Email', 'definer' => 'User' )); } public function testBindThrowsExceptionIfDefinerNotSet() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $p = array('type' => Doctrine_Relation::ONE, 'local' => 'email_id'); try { $r->bind('Email', $p); $this->fail('should throw exception'); } catch(Doctrine_Relation_Exception $e) { $this->pass(); } } public function testBindThrowsExceptionIfTypeNotSet() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $p = array('local' => 'email_id', 'definer' => 'User'); try { $r->bind('Email', $p); $this->fail('should throw exception'); } catch(Doctrine_Relation_Exception $e) { $this->pass(); } } public function testRelationParserSupportsLocalColumnGuessing() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $d = $r->completeDefinition(array('class' => 'Phonenumber', 'type' => Doctrine_Relation::MANY, 'foreign' => 'entity_id', 'definer' => 'Entity')); $this->assertEqual($d['local'], 'id'); } public function testRelationParserSupportsLocalColumnGuessing2() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $d = $r->completeDefinition(array('class' => 'Email', 'type' => Doctrine_Relation::ONE, 'foreign' => 'id', 'definer' => 'User')); $this->assertEqual($d['local'], 'email_id'); } public function testRelationParserSupportsForeignColumnGuessing() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $d = $r->completeDefinition(array('class' => 'Phonenumber', 'type' => Doctrine_Relation::MANY, 'local' => 'id', 'definer' => 'Entity')); $this->assertEqual($d['foreign'], 'entity_id'); } public function testRelationParserSupportsForeignColumnGuessing2() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $d = $r->completeDefinition(array('class' => 'Email', 'type' => Doctrine_Relation::ONE, 'local' => 'email_id', 'definer' => 'User')); $this->assertEqual($d['foreign'], 'id'); } public function testRelationParserSupportsGuessingOfBothColumns() { $r = new Doctrine_Relation_Parser($this->conn->getTable('User')); $d = $r->completeDefinition(array('class' => 'Email', 'type' => Doctrine_Relation::MANY, 'definer' => 'User')); $this->assertEqual($d['foreign'], 'id'); $this->assertEqual($d['local'], 'email_id'); } }