From ae342b43a28ee8360568f607cbbe41cf754bc29a Mon Sep 17 00:00:00 2001 From: zYne Date: Mon, 4 Jun 2007 21:50:12 +0000 Subject: [PATCH] --- tests/Query/ComponentAliasTestCase.php | 32 ++++++++++++++++++++------ tests/Query/MultiJoin2TestCase.php | 18 +++++++++++---- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/tests/Query/ComponentAliasTestCase.php b/tests/Query/ComponentAliasTestCase.php index afb312191..1c694f245 100644 --- a/tests/Query/ComponentAliasTestCase.php +++ b/tests/Query/ComponentAliasTestCase.php @@ -30,9 +30,9 @@ * @since 1.0 * @version $Revision$ */ -class Doctrine_Query_ComponentAlias_TestCase extends Doctrine_UnitTestCase +class Doctrine_Query_ComponentAlias_TestCase extends Doctrine_UnitTestCase { - public function testQueryWithSingleAlias() + public function testQueryWithSingleAlias() { $this->connection->clear(); $q = new Doctrine_Query(); @@ -49,7 +49,7 @@ class Doctrine_Query_ComponentAlias_TestCase extends Doctrine_UnitTestCase "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id WHERE (e.type = 0)"); $this->assertEqual($count, count($this->dbh)); } - public function testQueryWithNestedAliases() + public function testQueryWithNestedAliases() { $this->connection->clear(); $q = new Doctrine_Query(); @@ -66,23 +66,41 @@ class Doctrine_Query_ComponentAlias_TestCase extends Doctrine_UnitTestCase "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id FROM entity e LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p ON e2.id = p.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); $this->assertEqual(($count + 1), count($this->dbh)); } - public function testQueryWithMultipleNestedAliases() + public function testQueryWithMultipleNestedAliases() { $this->connection->clear(); $q = new Doctrine_Query(); - $q->from('User u, u.Phonenumber, u.Group g, g.Phonenumber'); + $q->from('User u, u.Phonenumber, u.Group g, g.Phonenumber')->where('u.id IN (5,6)'); $users = $q->execute(); $count = count($this->dbh); - $this->assertEqual($users->count(), 8); + $this->assertTrue($users[0]->Phonenumber instanceof Doctrine_Collection); $this->assertEqual($q->getQuery(), - "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); + "SELECT e.id AS e__id, e.name AS e__name, e.loginname AS e__loginname, e.password AS e__password, e.type AS e__type, e.created AS e__created, e.updated AS e__updated, e.email_id AS e__email_id, p.id AS p__id, p.phonenumber AS p__phonenumber, p.entity_id AS p__entity_id, e2.id AS e2__id, e2.name AS e2__name, e2.loginname AS e2__loginname, e2.password AS e2__password, e2.type AS e2__type, e2.created AS e2__created, e2.updated AS e2__updated, e2.email_id AS e2__email_id, p2.id AS p2__id, p2.phonenumber AS p2__phonenumber, p2.entity_id AS p2__entity_id FROM entity e LEFT JOIN phonenumber p ON e.id = p.entity_id LEFT JOIN groupuser g ON e.id = g.user_id LEFT JOIN entity e2 ON e2.id = g.group_id LEFT JOIN phonenumber p2 ON e2.id = p2.entity_id WHERE e.id IN (5, 6) AND (e.type = 0 AND (e2.type = 1 OR e2.type IS NULL))"); + $this->assertEqual(count($users), 2); + $this->assertEqual(count($users[0]['Group']), 1); + $this->assertEqual(count($users[0]['Group'][0]['Phonenumber']), 1); + $this->assertEqual(count($users[1]['Group']), 0); $this->assertEqual($count, count($this->dbh)); } + + public function testQueryWithMultipleNestedAliases2() + { + $q = new Doctrine_Query(); + print "
";
+        $q->from('User u, u.Phonenumber, u.Group g, g.Phonenumber')->where('u.id IN (5,6)');
+
+        $users = $q->execute(array(), Doctrine::FETCH_ARRAY);
+
+        $this->assertEqual(count($users), 2);
+        $this->assertEqual(count($users[0]['Group']), 1);
+        $this->assertEqual(count($users[0]['Group'][0]['Phonenumber']), 1);
+        $this->assertEqual(count($users[1]['Group']), 0);
+    }
 }
 ?>
diff --git a/tests/Query/MultiJoin2TestCase.php b/tests/Query/MultiJoin2TestCase.php
index 7edbb99d3..d3916480c 100644
--- a/tests/Query/MultiJoin2TestCase.php
+++ b/tests/Query/MultiJoin2TestCase.php
@@ -30,11 +30,18 @@
  * @since       1.0
  * @version     $Revision$
  */
-class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase {
-    public function testInitializeData() {
+class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase 
+{
+    public function prepareData()
+    { }
+    public function prepareTables()
+    { }
+    public function testInitializeData() 
+    {
         $query = new Doctrine_Query($this->connection);
         
         $cat = new QueryTest_Category();
+
         $cat->rootCategoryId = 0;
         $cat->parentCategoryId = 0;
         $cat->name = "Cat1";
@@ -57,7 +64,8 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase {
         $lastEntry->save();
 
     }
-    public function testMultipleJoinFetchingWithDeepJoins() {
+    public function testMultipleJoinFetchingWithDeepJoins() 
+    {
         $query = new Doctrine_Query($this->connection);
         $queryCount = $this->connection->getDbh()->count();
         try {
@@ -72,6 +80,7 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase {
                     ->execute();
             // Test that accessing a loaded (but empty) relation doesnt trigger an extra query
             $this->assertEqual($queryCount + 1, $this->connection->getDbh()->count());
+
             $categories[0]->subCategories;
             $this->assertEqual($queryCount + 1, $this->connection->getDbh()->count());
         } catch (Doctrine_Exception $e) {
@@ -79,7 +88,8 @@ class Doctrine_Query_MultiJoin2_TestCase extends Doctrine_UnitTestCase {
         }
     }
     
-    public function testMultipleJoinFetchingWithArrayFetching() {
+    public function testMultipleJoinFetchingWithArrayFetching() 
+    {
         $query = new Doctrine_Query($this->connection);
         $queryCount = $this->connection->getDbh()->count();
         try {