Commit 29892607 authored by zYne's avatar zYne

tests for the new templating model

parent 5490247c
...@@ -32,18 +32,119 @@ ...@@ -32,18 +32,119 @@
*/ */
class Doctrine_Template_TestCase extends Doctrine_UnitTestCase class Doctrine_Template_TestCase extends Doctrine_UnitTestCase
{ {
public function testTemplatesGenerateFiles() public function prepareTables()
{ }
public function prepareData()
{ }
public function testAccessingNonExistingImplementationThrowsException()
{
try {
$user = new ConcreteUser();
$user->Group;
$this->fail();
} catch (Doctrine_Relation_Parser_Exception $e) {
$this->pass();
}
}
public function testAccessingExistingImplementationSupportsAssociations()
{ {
@unlink('../models/BlogTag.php'); $this->manager->setImpl('UserTemplate', 'ConcreteUser')
->setImpl('GroupUserTemplate', 'ConcreteGroupUser')
->setImpl('GroupTemplate', 'ConcreteGroup')
->setImpl('EmailTemplate', 'ConcreteEmail');
$user = new ConcreteUser();
$group = $user->Group[0];
$blog = new Blog(); $this->assertTrue($group instanceof ConcreteGroup);
$this->assertTrue(file_exists('../models/BlogTag.php')); $this->assertTrue($group->User[0] instanceof ConcreteUser);
} }
public function testTemplateRelationsSupportConcreteInheritance() public function testAccessingExistingImplementationSupportsForeignKeyRelations()
{ {
$tag = new BlogTag();
} $user = new ConcreteUser();
$this->assertTrue($user->Email[0] instanceof ConcreteEmail);
}
}
class ConcreteUser extends Doctrine_Record
{
public function setUp()
{
$this->loadTemplate('UserTemplate');
}
}
class ConcreteGroup extends Doctrine_Record
{
public function setUp()
{
$this->loadTemplate('GroupTemplate');
}
}
class ConcreteEmail extends Doctrine_Record
{
public function setUp()
{
$this->loadTemplate('EmailTemplate');
}
}
class ConcreteGroupUser extends Doctrine_Record
{
public function setUp()
{
$this->loadTemplate('GroupUserTemplate');
}
}
class UserTemplate extends Doctrine_Template
{
public function setTableDefinition()
{
$this->hasColumn('name', 'string');
$this->hasColumn('password', 'string');
}
public function setUp()
{
$this->hasMany('GroupTemplate as Group', array('local' => 'user_id',
'foreign' => 'group_id',
'refClass' => 'GroupUserTemplate'));
$this->hasMany('EmailTemplate as Email', array('local' => 'id',
'foreign' => 'user_id'));
}
}
class EmailTemplate extends Doctrine_Template
{
public function setTableDefinition()
{
$this->hasColumn('address', 'string');
$this->hasColumn('user_id', 'integer');
}
public function setUp()
{
$this->hasOne('UserTemplate as User', array('local' => 'user_id',
'foreign' => 'id'));
}
}
class GroupTemplate extends Doctrine_Template
{
public function setTableDefinition()
{
$this->hasColumn('name', 'string');
}
public function setUp()
{
$this->hasMany('UserTemplate as User', array('local' => 'user_id',
'foreign' => 'group_id',
'refClass' => 'GroupUserTemplate'));
}
}
class GroupUserTemplate extends Doctrine_Template
{
public function setTableDefinition()
{
$this->hasColumn('user_id', 'integer');
$this->hasColumn('group_id', 'integer');
}
} }
...@@ -37,10 +37,12 @@ class Doctrine_Tokenizer_TestCase extends Doctrine_UnitTestCase ...@@ -37,10 +37,12 @@ class Doctrine_Tokenizer_TestCase extends Doctrine_UnitTestCase
{ } { }
public function prepareTables() public function prepareTables()
{ } { }
public function testSqlExplode() public function testSqlExplode()
{ {
$str = "word1 word2 word3"; $str = "word1 word2 word3";
$a = Doctrine_Tokenizer::sqlExplode($str); $a = Doctrine_Tokenizer::sqlExplode($str);
$this->assertEqual($a, array("word1", "word2", "word3")); $this->assertEqual($a, array("word1", "word2", "word3"));
$str = "word1 (word2 word3)"; $str = "word1 (word2 word3)";
...@@ -99,4 +101,12 @@ class Doctrine_Tokenizer_TestCase extends Doctrine_UnitTestCase ...@@ -99,4 +101,12 @@ class Doctrine_Tokenizer_TestCase extends Doctrine_UnitTestCase
$a = Doctrine_Tokenizer::sqlExplode($str); $a = Doctrine_Tokenizer::sqlExplode($str);
$this->assertEqual($a, array("something", "(( ))")); $this->assertEqual($a, array("something", "(( ))"));
} }
public function testSqlExplode2()
{
$str = 'rdbms (dbal OR database)';
$a = Doctrine_Tokenizer::sqlExplode($str, ' OR ');
$this->assertEqual($a, array('rdbms (dbal OR database)'));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment