1
0
mirror of synced 2024-12-14 15:16:04 +03:00

Fixes #192, added Doctrine_Record_State_TestCase

Ticket: 192
This commit is contained in:
zYne 2006-10-25 20:02:40 +00:00
parent e06f0be65d
commit 0835a57ce1
8 changed files with 131 additions and 25 deletions

View File

@ -512,9 +512,14 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
if($state == null) { if($state == null) {
return $this->_state; return $this->_state;
} }
$err = false;
if(is_integer($state)) { if(is_integer($state)) {
if($state >= 1 && $state <= 6) if($state >= 1 && $state <= 6)
$this->_state = $state; $this->_state = $state;
else
$err = true;
} elseif(is_string($state)) { } elseif(is_string($state)) {
$upper = strtoupper($state); $upper = strtoupper($state);
switch($upper) { switch($upper) {
@ -526,10 +531,13 @@ abstract class Doctrine_Record extends Doctrine_Access implements Countable, Ite
case 'DELETED': case 'DELETED':
$this->_state = constant('Doctrine_Record::STATE_' . $upper); $this->_state = constant('Doctrine_Record::STATE_' . $upper);
break; break;
default:
$err = true;
} }
} }
throw new Doctrine_Record_State_Exception('Unknown record state ' . $state); if($err)
throw new Doctrine_Record_State_Exception('Unknown record state ' . $state);
} }
/** /**
* refresh * refresh

View File

@ -177,7 +177,7 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable {
$names = array_reverse($names); $names = array_reverse($names);
// create database table // create database table
if(method_exists($record,"setTableDefinition")) { if(method_exists($record, 'setTableDefinition')) {
$record->setTableDefinition(); $record->setTableDefinition();
$this->columnCount = count($this->columns); $this->columnCount = count($this->columns);
@ -185,7 +185,7 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable {
if(isset($this->columns)) { if(isset($this->columns)) {
// get the declaring class of setTableDefinition method // get the declaring class of setTableDefinition method
$method = new ReflectionMethod($this->options['name'],"setTableDefinition"); $method = new ReflectionMethod($this->options['name'], 'setTableDefinition');
$class = $method->getDeclaringClass(); $class = $method->getDeclaringClass();
if( ! isset($this->options['tableName'])) if( ! isset($this->options['tableName']))
@ -193,9 +193,17 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable {
switch(count($this->primaryKeys)): switch(count($this->primaryKeys)):
case 0: case 0:
$this->columns = array_merge(array("id" => array("integer", 20, array("autoincrement" => true, "primary" => true))), $this->columns); $this->columns = array_merge(array('id' =>
$this->primaryKeys[] = "id"; array('integer',
$this->identifier = "id"; 20,
array('autoincrement' => true,
'primary' => true
)
)
), $this->columns);
$this->primaryKeys[] = 'id';
$this->identifier = 'id';
$this->identifierType = Doctrine_Identifier::AUTO_INCREMENT; $this->identifierType = Doctrine_Identifier::AUTO_INCREMENT;
$this->columnCount++; $this->columnCount++;
break; break;
@ -964,9 +972,8 @@ class Doctrine_Table extends Doctrine_Configurable implements Countable {
*/ */
final public function enumValue($field, $index) { final public function enumValue($field, $index) {
if ($index instanceof Doctrine_Null) if ($index instanceof Doctrine_Null)
{ return $index;
return $index;
}
return isset($this->options['enumMap'][$field][$index]) ? $this->options['enumMap'][$field][$index] : $index; return isset($this->options['enumMap'][$field][$index]) ? $this->options['enumMap'][$field][$index] : $index;
} }
/** /**

View File

@ -343,10 +343,16 @@ $menu = array("Getting started" =>
"Transactions" => array( "Transactions" => array(
"Introduction", "Introduction",
"Unit of work", "Unit of work",
"Nesting",
"Savepoints",
"Locking strategies" => "Locking strategies" =>
array("Pessimistic locking", array("Pessimistic locking",
"Optimistic locking"), "Optimistic locking"),
"Nesting"
"Lock modes",
"Isolation levels",
"Deadlocks",
), ),
/** /**
"Developer components" => array( "Developer components" => array(
@ -466,12 +472,12 @@ $menu = array("Getting started" =>
if( ! file_exists("docs/$title - $k - $v2.php")) { if( ! file_exists("docs/$title - $k - $v2.php")) {
$missing[0]++; $missing[0]++;
$str .= " [ <font color='red'>doc</font> ] "; $str .= " [ <font color='red'>doc</font> ] ";
touch("docs/$title - $k - $v2.php"); //touch("docs/$title - $k - $v2.php");
} }
if( ! file_exists("codes/$title - $k - $v2.php")) { if( ! file_exists("codes/$title - $k - $v2.php")) {
$missing[1]++; $missing[1]++;
$str .= " [ <font color='red'>code</font> ] "; $str .= " [ <font color='red'>code</font> ] ";
touch("codes/$title - $k - $v2.php"); //touch("codes/$title - $k - $v2.php");
} }
@ -486,12 +492,12 @@ $menu = array("Getting started" =>
if( ! file_exists("docs/$title - $t.php")) { if( ! file_exists("docs/$title - $t.php")) {
$missing[0]++; $missing[0]++;
$str .= " [ <font color='red'>doc</font> ] "; $str .= " [ <font color='red'>doc</font> ] ";
touch("docs/$title - $t.php"); //touch("docs/$title - $t.php");
} }
if( ! file_exists("codes/$title - $t.php")) { if( ! file_exists("codes/$title - $t.php")) {
$missing[1]++; $missing[1]++;
$str .= " [ <font color='red'>code</font> ] "; $str .= " [ <font color='red'>code</font> ] ";
touch("codes/$title - $t.php"); //touch("codes/$title - $t.php");
} }
print "<dt>".$e." <a href=\"".$_SERVER['PHP_SELF']."?index=$i#$e\">".$t."</a>$str</dt>\n"; print "<dt>".$e." <a href=\"".$_SERVER['PHP_SELF']."?index=$i#$e\">".$t."</a>$str</dt>\n";
} }

View File

@ -90,6 +90,7 @@ class Doctrine_Import_TestCase extends Doctrine_UnitTestCase {
unlink('tmp' . DIRECTORY_SEPARATOR . 'ImportTest.php'); unlink('tmp' . DIRECTORY_SEPARATOR . 'ImportTest.php');
} }
public function testForeignKeySupport() { public function testForeignKeySupport() {
/**
$this->dbh->query('CREATE TABLE album ( $this->dbh->query('CREATE TABLE album (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
title VARCHAR(100), title VARCHAR(100),
@ -109,7 +110,7 @@ class Doctrine_Import_TestCase extends Doctrine_UnitTestCase {
$sql = "PRAGMA table_info(track)"; $sql = "PRAGMA table_info(track)";
$sql = "PRAGMA foreign_key_list(track)"; $sql = "PRAGMA foreign_key_list(track)";
$result = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC); $result = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
*/
} }

View File

@ -0,0 +1,80 @@
<?php
class Doctrine_Record_State_TestCase extends Doctrine_UnitTestCase {
public function prepareTables() { }
public function prepareData() { }
public function testAssignUnknownState() {
$user = new User();
try {
$user->state(123123);
$this->fail();
} catch(Doctrine_Record_State_Exception $e) {
$this->pass();
}
$this->assertEqual($user->state(), Doctrine_Record::STATE_TCLEAN);
try {
$user->state('some unknown state');
$this->fail();
} catch(Doctrine_Record_State_Exception $e) {
$this->pass();
}
$this->assertEqual($user->state(), Doctrine_Record::STATE_TCLEAN);
}
public function testAssignDirtyState() {
$user = new User();
$user->state(Doctrine_Record::STATE_DIRTY);
$this->assertEqual($user->state(), Doctrine_Record::STATE_DIRTY);
$user->state('dirty');
$this->assertEqual($user->state(), Doctrine_Record::STATE_DIRTY);
}
public function testAssignCleanState() {
$user = new User();
$user->state(Doctrine_Record::STATE_CLEAN);
$this->assertEqual($user->state(), Doctrine_Record::STATE_CLEAN);
$user->state('clean');
$this->assertEqual($user->state(), Doctrine_Record::STATE_CLEAN);
}
public function testAssignTransientCleanState() {
$user = new User();
$user->state(Doctrine_Record::STATE_TCLEAN);
$this->assertEqual($user->state(), Doctrine_Record::STATE_TCLEAN);
$user->state('tclean');
$this->assertEqual($user->state(), Doctrine_Record::STATE_TCLEAN);
}
public function testAssignTransientDirtyState() {
$user = new User();
$user->state(Doctrine_Record::STATE_TDIRTY);
$this->assertEqual($user->state(), Doctrine_Record::STATE_TDIRTY);
$user->state('tdirty');
$this->assertEqual($user->state(), Doctrine_Record::STATE_TDIRTY);
}
public function testAssignProxyState() {
$user = new User();
$user->state(Doctrine_Record::STATE_PROXY);
$this->assertEqual($user->state(), Doctrine_Record::STATE_PROXY);
$user->state('proxy');
$this->assertEqual($user->state(), Doctrine_Record::STATE_PROXY);
}
}
?>

View File

@ -1,7 +1,7 @@
<?php <?php
require_once("UnitTestCase.php"); require_once("UnitTestCase.php");
class Doctrine_RecordTestCase extends Doctrine_UnitTestCase { class Doctrine_Record_TestCase extends Doctrine_UnitTestCase {
public function prepareTables() { public function prepareTables() {
$this->tables[] = "enumTest"; $this->tables[] = "enumTest";

View File

@ -3,11 +3,12 @@
class RelationTest extends Doctrine_Record { class RelationTest extends Doctrine_Record {
public function setTableDefinition() { public function setTableDefinition() {
$this->hasColumn('name', 'string', 200); $this->hasColumn('name', 'string', 200);
$this->hasColumn("child_id", "integer"); $this->hasColumn('child_id', 'integer');
} }
public function setUp() { public function setUp() {
$this->ownsMany('OwnsOneToManyWithAlias as AliasO2M', 'AliasO2M.component_id'); $this->ownsMany('OwnsOneToManyWithAlias as AliasO2M', 'AliasO2M.component_id');
$this->hasMany('HasManyToManyWithAlias as AliasM2M', 'JoinTable.c1_id'); $this->hasMany('M2M as AliasM2M', 'JoinTable.c1_id');
// $this->hasMany('M2M as AliasM2M2', 'JoinTable.c1_id');
} }
} }
class RelationTestChild extends RelationTest { class RelationTestChild extends RelationTest {
@ -41,7 +42,7 @@ class OwnsOneToManyWithAlias extends Doctrine_Record {
} }
} }
class HasManyToManyWithAlias extends Doctrine_Record { class M2M extends Doctrine_Record {
public function setTableDefinition() { public function setTableDefinition() {
$this->hasColumn('name', 'string', 200); $this->hasColumn('name', 'string', 200);
} }
@ -52,7 +53,7 @@ class HasManyToManyWithAlias extends Doctrine_Record {
class Doctrine_Relation_TestCase extends Doctrine_UnitTestCase { class Doctrine_Relation_TestCase extends Doctrine_UnitTestCase {
public function prepareData() { } public function prepareData() { }
public function prepareTables() { public function prepareTables() {
$this->tables = array('HasManyToManyWithAlias', 'RelationTest', 'JoinTable'); $this->tables = array('M2M', 'RelationTest', 'JoinTable');
parent::prepareTables(); parent::prepareTables();
} }

View File

@ -12,6 +12,7 @@ require_once("BatchIteratorTestCase.php");
require_once("CacheFileTestCase.php"); require_once("CacheFileTestCase.php");
require_once("RecordTestCase.php"); require_once("RecordTestCase.php");
require_once("RecordStateTestCase.php");
require_once("RecordFilterTestCase.php"); require_once("RecordFilterTestCase.php");
require_once("AccessTestCase.php"); require_once("AccessTestCase.php");
@ -57,14 +58,16 @@ print "<pre>";
$test = new GroupTest("Doctrine Framework Unit Tests"); $test = new GroupTest("Doctrine Framework Unit Tests");
$test->addTestCase(new Doctrine_Relation_TestCase());
$test->addTestCase(new Doctrine_Record_TestCase());
$test->addTestCase(new Doctrine_Record_State_TestCase());
$test->addTestCase(new Doctrine_Import_TestCase()); $test->addTestCase(new Doctrine_Import_TestCase());
$test->addTestCase(new Doctrine_SchemaTestCase()); $test->addTestCase(new Doctrine_SchemaTestCase());
$test->addTestCase(new Doctrine_Relation_TestCase());
$test->addTestCase(new Doctrine_RecordTestCase());
$test->addTestCase(new Doctrine_ValidatorTestCase()); $test->addTestCase(new Doctrine_ValidatorTestCase());
$test->addTestCase(new Doctrine_Query_MultiJoin_TestCase()); $test->addTestCase(new Doctrine_Query_MultiJoin_TestCase());