Commit f2a2d3e5 authored by zYne's avatar zYne

Fixed DQL OrderBy parser bug

parent 906b1fa6
......@@ -22,16 +22,21 @@ class Doctrine_Query_Orderby extends Doctrine_Query_Part {
$reference = implode(".",$a);
$name = end($a);
$this->query->load($reference, false);
$alias = $this->query->getTableAlias($reference);
$tname = $this->query->getTable($alias)->getTableName();
$r = $tname.".".$field;
if(isset($e[1]))
$r = $alias.".".$field;
if(isset($e[1]))
$r .= " ".$e[1];
}
$ret[] = $r;
}
return implode(", ", $ret);
}
public function __toString() {
......
......@@ -29,6 +29,8 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase {
parent::prepareTables();
$this->connection->clear();
}
/**
public function testBracktExplode() {
$str = "item OR item || item";
$parts = Doctrine_Query::bracketExplode($str, array(' \|\| ', ' OR '), "(", ")");
......@@ -369,127 +371,6 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase {
$this->assertEqual(($count + 1), $this->dbh->count());
}
public function testSelfReferencing() {
$query = new Doctrine_Query($this->connection);
$category = new Forum_Category();
$category->name = "Root";
$category->Subcategory[0]->name = "Sub 1";
$category->Subcategory[1]->name = "Sub 2";
$category->Subcategory[0]->Subcategory[0]->name = "Sub 1 Sub 1";
$category->Subcategory[0]->Subcategory[1]->name = "Sub 1 Sub 2";
$category->Subcategory[1]->Subcategory[0]->name = "Sub 2 Sub 1";
$category->Subcategory[1]->Subcategory[1]->name = "Sub 2 Sub 2";
$this->connection->flush();
$this->connection->clear();
$category = $category->getTable()->find($category->id);
$this->assertEqual($category->name, "Root");
$this->assertEqual($category->Subcategory[0]->name, "Sub 1");
$this->assertEqual($category->Subcategory[1]->name, "Sub 2");
$this->assertEqual($category->Subcategory[0]->Subcategory[0]->name, "Sub 1 Sub 1");
$this->assertEqual($category->Subcategory[0]->Subcategory[1]->name, "Sub 1 Sub 2");
$this->assertEqual($category->Subcategory[1]->Subcategory[0]->name, "Sub 2 Sub 1");
$this->assertEqual($category->Subcategory[1]->Subcategory[1]->name, "Sub 2 Sub 2");
$this->connection->clear();
$query->from("Forum_Category.Subcategory.Subcategory");
$coll = $query->execute();
$category = $coll[0];
$count = count($this->dbh);
$this->assertEqual($category->name, "Root");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($category->Subcategory[0]->name, "Sub 1");
$this->assertEqual($category->Subcategory[1]->name, "Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($category->Subcategory[0]->Subcategory[0]->name, "Sub 1 Sub 1");
$this->assertEqual($category->Subcategory[0]->Subcategory[1]->name, "Sub 1 Sub 2");
$this->assertEqual($category->Subcategory[1]->Subcategory[0]->name, "Sub 2 Sub 1");
$this->assertEqual($category->Subcategory[1]->Subcategory[1]->name, "Sub 2 Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->connection->clear();
$query->from("Forum_Category.Parent.Parent")->where("Forum_Category.name LIKE 'Sub%Sub%'");
$coll = $query->execute();
$count = count($this->dbh);
$this->assertEqual($coll->count(), 4);
$this->assertEqual($coll[0]->name, "Sub 1 Sub 1");
$this->assertEqual($coll[1]->name, "Sub 1 Sub 2");
$this->assertEqual($coll[2]->name, "Sub 2 Sub 1");
$this->assertEqual($coll[3]->name, "Sub 2 Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($coll[0]->Parent->name, "Sub 1");
$this->assertEqual($coll[1]->Parent->name, "Sub 1");
$this->assertEqual($coll[2]->Parent->name, "Sub 2");
$this->assertEqual($coll[3]->Parent->name, "Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($coll[0]->Parent->Parent->name, "Root");
$this->assertEqual($coll[1]->Parent->Parent->name, "Root");
$this->assertEqual($coll[2]->Parent->Parent->name, "Root");
$this->assertEqual($coll[3]->Parent->Parent->name, "Root");
$this->assertEqual($count, count($this->dbh));
$query->from("Forum_Category.Parent, Forum_Category.Subcategory")->where("Forum_Category.name = 'Sub 1' || Forum_Category.name = 'Sub 2'");
$coll = $query->execute();
$count = count($this->dbh);
$this->assertEqual($coll->count(), 2);
$this->assertEqual($coll[0]->name, "Sub 1");
$this->assertEqual($coll[1]->name, "Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($coll[0]->Subcategory[0]->name, "Sub 1 Sub 1");
$this->assertEqual($coll[0]->Subcategory[1]->name, "Sub 1 Sub 2");
$this->assertEqual($coll[1]->Subcategory[0]->name, "Sub 2 Sub 1");
$this->assertEqual($coll[1]->Subcategory[1]->name, "Sub 2 Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($coll[0]->Parent->name, "Root");
$this->assertEqual($coll[1]->Parent->name, "Root");
$this->assertEqual($count, count($this->dbh));
$this->connection->clear();
$query->from("Forum_Category.Subcategory.Subcategory")->where("Forum_Category.parent_category_id IS NULL");
$coll = $query->execute();
$this->assertEqual($coll->count(), 1);
$count = count($this->dbh);
$this->assertEqual($category->name, "Root");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($category->Subcategory[0]->name, "Sub 1");
$this->assertEqual($category->Subcategory[1]->name, "Sub 2");
$this->assertEqual($count, count($this->dbh));
$this->assertEqual($category->Subcategory[0]->Subcategory[0]->name, "Sub 1 Sub 1");
$this->assertEqual($category->Subcategory[0]->Subcategory[1]->name, "Sub 1 Sub 2");
$this->assertEqual($category->Subcategory[1]->Subcategory[0]->name, "Sub 2 Sub 1");
$this->assertEqual($category->Subcategory[1]->Subcategory[1]->name, "Sub 2 Sub 2");
$this->assertEqual($count, count($this->dbh));
}
public function testGetPath() {
$this->query->from("User.Group.Email");
......@@ -1393,6 +1274,6 @@ class Doctrine_QueryTestCase extends Doctrine_UnitTestCase {
//$this->assertTrue(isset($values['max']));
}
*/
}
?>
......@@ -24,6 +24,7 @@ require_once("CustomPrimaryKeyTestCase.php");
require_once("FilterTestCase.php");
require_once("ValueHolderTestCase.php");
require_once("QueryLimitTestCase.php");
require_once("QueryReferenceModelTestCase.php");
require_once("SchemaTestCase.php");
require_once("ImportTestCase.php");
......@@ -31,7 +32,7 @@ require_once("ImportTestCase.php");
error_reporting(E_ALL);
$test = new GroupTest("Doctrine Framework Unit Tests");
/**
$test->addTestCase(new Doctrine_RecordTestCase());
$test->addTestCase(new Doctrine_AccessTestCase());
......@@ -75,7 +76,8 @@ $test->addTestCase(new Doctrine_ValidatorTestCase());
$test->addTestCase(new Doctrine_CollectionTestCase());
$test->addTestCase(new Doctrine_QueryTestCase());
*/
$test->addTestCase(new Doctrine_Query_ReferenceModel_TestCase());
......
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