This commit is contained in:
parent
a41cd2bb01
commit
033d511ce3
@ -84,6 +84,51 @@ class Doctrine_CustomResultSetOrder_TestCase extends Doctrine_UnitTestCase {
|
|||||||
$this->tables[] = "BoardWithPosition";
|
$this->tables[] = "BoardWithPosition";
|
||||||
parent::prepareTables();
|
parent::prepareTables();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Checks whether the boards are correctly assigned to the categories.
|
||||||
|
*
|
||||||
|
* The 'evil' result set that confuses the object population is displayed below.
|
||||||
|
*
|
||||||
|
* catId | catPos | catName | boardPos | board.category_id
|
||||||
|
* 1 | 0 | First | 0 | 1
|
||||||
|
* 2 | 0 | Second | 0 | 2 <-- The split that confuses the object population
|
||||||
|
* 1 | 0 | First | 1 | 1
|
||||||
|
* 1 | 0 | First | 2 | 1
|
||||||
|
* 3 | 2 | Third | NULL
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function testQueryWithOrdering2() {
|
||||||
|
$q = new Doctrine_Query($this->connection);
|
||||||
|
print '<pre>';
|
||||||
|
$categories = $q->select('c.*, b.*')
|
||||||
|
->from('CategoryWithPosition c')
|
||||||
|
->leftJoin('c.Boards b')
|
||||||
|
->orderBy('c.position ASC, b.position ASC')
|
||||||
|
->execute(array(), Doctrine::FETCH_ARRAY);
|
||||||
|
|
||||||
|
$this->assertEqual(3, count($categories), 'Some categories were doubled!');
|
||||||
|
|
||||||
|
// Check each category
|
||||||
|
foreach ($categories as $category) {
|
||||||
|
switch ($category['name']) {
|
||||||
|
case 'First':
|
||||||
|
// The first category should have 3 boards, right?
|
||||||
|
// It has only 1! The other two slipped to the 2nd category!
|
||||||
|
$this->assertEqual(3, count($category['Boards']));
|
||||||
|
break;
|
||||||
|
case 'Second':
|
||||||
|
// The second category should have 1 board, but it got 3 now
|
||||||
|
$this->assertEqual(1, count($category['Boards']));;
|
||||||
|
break;
|
||||||
|
case 'Third':
|
||||||
|
// The third has no boards as expected.
|
||||||
|
//print $category->Boards[0]->position;
|
||||||
|
$this->assertEqual(0, count($category['Boards']));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether the boards are correctly assigned to the categories.
|
* Checks whether the boards are correctly assigned to the categories.
|
||||||
@ -97,31 +142,35 @@ class Doctrine_CustomResultSetOrder_TestCase extends Doctrine_UnitTestCase {
|
|||||||
* 1 | 0 | First | 2 | 1
|
* 1 | 0 | First | 2 | 1
|
||||||
* 3 | 2 | Third | NULL
|
* 3 | 2 | Third | NULL
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function testQueryWithOrdering() {
|
public function testQueryWithOrdering() {
|
||||||
$q = new Doctrine_Query($this->connection);
|
$q = new Doctrine_Query($this->connection);
|
||||||
$categories = $q->select("c.*, b.*")
|
$categories = $q->select('c.*, b.*')
|
||||||
->from("CategoryWithPosition c")
|
->from('CategoryWithPosition c')
|
||||||
->leftJoin("c.Boards b")
|
->leftJoin('c.Boards b')
|
||||||
->orderBy("c.position ASC, b.position ASC")
|
->orderBy('c.position ASC, b.position ASC')
|
||||||
->execute();
|
->execute();
|
||||||
|
|
||||||
$this->assertEqual(3, $categories->count(), "Some categories were doubled!");
|
$this->assertEqual(3, $categories->count(), 'Some categories were doubled!');
|
||||||
|
|
||||||
// Check each category
|
// Check each category
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
|
|
||||||
switch ($category->name) {
|
switch ($category->name) {
|
||||||
case "First":
|
case 'First':
|
||||||
// The first category should have 3 boards, right?
|
// The first category should have 3 boards, right?
|
||||||
// It has only 1! The other two slipped to the 2nd category!
|
// It has only 1! The other two slipped to the 2nd category!
|
||||||
|
print $category->Boards->count();
|
||||||
$this->assertEqual(3, $category->Boards->count());
|
$this->assertEqual(3, $category->Boards->count());
|
||||||
break;
|
break;
|
||||||
case "Second":
|
case 'Second':
|
||||||
// The second category should have 1 board, but it got 3 now
|
// The second category should have 1 board, but it got 3 now
|
||||||
|
print $category->Boards->count();
|
||||||
$this->assertEqual(1, $category->Boards->count());
|
$this->assertEqual(1, $category->Boards->count());
|
||||||
break;
|
break;
|
||||||
case "Third":
|
case 'Third':
|
||||||
// The third has no boards as expected.
|
// The third has no boards as expected.
|
||||||
|
//print $category->Boards[0]->position;
|
||||||
$this->assertEqual(0, $category->Boards->count());
|
$this->assertEqual(0, $category->Boards->count());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user