diff --git a/tests/Query/SubqueryTestCase.php b/tests/Query/SubqueryTestCase.php index 2b37070dd..9f6a112e9 100644 --- a/tests/Query/SubqueryTestCase.php +++ b/tests/Query/SubqueryTestCase.php @@ -47,6 +47,7 @@ class Doctrine_Query_Subquery_TestCase extends Doctrine_UnitTestCase $this->assertEqual($users->count(), 7); $this->assertEqual($users[0]->name, 'Arnold Schwarzenegger'); } + public function testSubqueryAllowsSelectingOfAnyField() { $q = new Doctrine_Query(); @@ -84,27 +85,28 @@ class Doctrine_Query_Subquery_TestCase extends Doctrine_UnitTestCase $this->assertNotEqual($q->getQuery(), "SELECT e.id AS e__id, e.name AS e__name, (SELECT COUNT(e.id) AS e__0 FROM entity e WHERE e.id = e.id AND (e.type = 0)) AS e__0 FROM entity e WHERE e.name = 'zYne' AND (e.type = 0) LIMIT 1"); } - - public function testGetLimitSubqueryOrderBy() - { - $query = new Doctrine_Query(); - $query->select('u.*, COUNT(DISTINCT a.id) num_albums'); - $query->from('User u, u.Album a'); - $query->orderby('num_albums'); + public function testGetLimitSubqueryOrderBy2() + { + $q = new Doctrine_Query(); + $q->select('u.name, COUNT(DISTINCT a.id) num_albums'); + $q->from('User u, u.Album a'); + $q->orderby('num_albums'); + $q->groupby('u.id'); try { // this causes getLimitSubquery() to be used, and it fails - $query->limit(5); + $q->limit(5); + + $users = $q->execute(); - $users = $query->execute(); - $count = $users->count(); } catch (Doctrine_Exception $e) { + $this->fail(); } - - $this->assertEqual($count, 1); + + $this->assertEqual($q->getSql(), 'SELECT e.id AS e__id, e.name AS e__name, COUNT(DISTINCT a.id) AS a__0 FROM entity e LEFT JOIN album a ON e.id = a.user_id WHERE e.id IN (SELECT DISTINCT e2.id FROM entity e2 LEFT JOIN album a2 ON e2.id = a2.user_id WHERE (e2.type = 0) GROUP BY e2.id ORDER BY a__0 LIMIT 5) AND (e.type = 0) GROUP BY e.id ORDER BY a__0'); } } ?>