From c8c7cf0528c4b7d7ce7f1c3937b493e876e66e7a Mon Sep 17 00:00:00 2001 From: Benjamin Eberlei Date: Fri, 3 Jan 2014 21:28:06 +0100 Subject: [PATCH] Fix tests after merge of QueryBuilder#addCriteria changes. --- lib/Doctrine/ORM/QueryBuilder.php | 6 +++ tests/Doctrine/Tests/ORM/QueryBuilderTest.php | 43 +++++++++++++------ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/lib/Doctrine/ORM/QueryBuilder.php b/lib/Doctrine/ORM/QueryBuilder.php index 370879fb6..f8363fcea 100644 --- a/lib/Doctrine/ORM/QueryBuilder.php +++ b/lib/Doctrine/ORM/QueryBuilder.php @@ -283,12 +283,18 @@ class QueryBuilder * * * @deprecated Please use $qb->getRootAliases() instead. + * @throws RuntimeException * * @return string */ public function getRootAlias() { $aliases = $this->getRootAliases(); + + if ( ! isset($aliases[0])) { + throw new \RuntimeException('No alias was set before invoking getRootAlias().'); + } + return $aliases[0]; } diff --git a/tests/Doctrine/Tests/ORM/QueryBuilderTest.php b/tests/Doctrine/Tests/ORM/QueryBuilderTest.php index 231c7cf02..84d0c4172 100644 --- a/tests/Doctrine/Tests/ORM/QueryBuilderTest.php +++ b/tests/Doctrine/Tests/ORM/QueryBuilderTest.php @@ -417,10 +417,17 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase public function testAddMultipleSameCriteriaWhere() { $qb = $this->_em->createQueryBuilder(); + $qb->select('alias1')->from('Doctrine\Tests\Models\CMS\CmsUser', 'alias1'); + $criteria = new Criteria(); - $criteria->where($criteria->expr()->andX($criteria->expr()->eq('field', 'value1'), $criteria->expr()->eq('field', 'value2'))); + $criteria->where($criteria->expr()->andX( + $criteria->expr()->eq('field', 'value1'), + $criteria->expr()->eq('field', 'value2') + )); + $qb->addCriteria($criteria); - $this->assertEquals('field = :field AND field = :field_1', (string) $qb->getDQLPart('where')); + + $this->assertEquals('alias1.field = :field AND alias1.field = :field_1', (string) $qb->getDQLPart('where')); $this->assertNotNull($qb->getParameter('field')); $this->assertNotNull($qb->getParameter('field_1')); } @@ -431,13 +438,15 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase public function testAddCriteriaWhereWithMultipleParametersWithSameField() { $qb = $this->_em->createQueryBuilder(); + $qb->select('alias1')->from('Doctrine\Tests\Models\CMS\CmsUser', 'alias1'); + $criteria = new Criteria(); $criteria->where($criteria->expr()->eq('field', 'value1')); $criteria->andWhere($criteria->expr()->gt('field', 'value2')); $qb->addCriteria($criteria); - $this->assertEquals('field = :field AND field > :field_1', (string) $qb->getDQLPart('where')); + $this->assertEquals('alias1.field = :field AND alias1.field > :field_1', (string) $qb->getDQLPart('where')); $this->assertSame('value1', $qb->getParameter('field')->getValue()); $this->assertSame('value2', $qb->getParameter('field_1')->getValue()); } @@ -448,13 +457,15 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase public function testAddCriteriaWhereWithMultipleParametersWithDifferentFields() { $qb = $this->_em->createQueryBuilder(); + $qb->select('alias1')->from('Doctrine\Tests\Models\CMS\CmsUser', 'alias1'); + $criteria = new Criteria(); $criteria->where($criteria->expr()->eq('field1', 'value1')); $criteria->andWhere($criteria->expr()->gt('field2', 'value2')); $qb->addCriteria($criteria); - $this->assertEquals('field1 = :field1 AND field2 > :field2', (string) $qb->getDQLPart('where')); + $this->assertEquals('alias1.field1 = :field1 AND alias1.field2 > :field2', (string) $qb->getDQLPart('where')); $this->assertSame('value1', $qb->getParameter('field1')->getValue()); $this->assertSame('value2', $qb->getParameter('field2')->getValue()); } @@ -465,15 +476,17 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase public function testAddCriteriaWhereWithMultipleParametersWithSubpathsAndDifferentProperties() { $qb = $this->_em->createQueryBuilder(); + $qb->select('alias1')->from('Doctrine\Tests\Models\CMS\CmsUser', 'alias1'); + $criteria = new Criteria(); - $criteria->where($criteria->expr()->eq('alias1.field1', 'value1')); - $criteria->andWhere($criteria->expr()->gt('alias1.field2', 'value2')); + $criteria->where($criteria->expr()->eq('field1', 'value1')); + $criteria->andWhere($criteria->expr()->gt('field2', 'value2')); $qb->addCriteria($criteria); - $this->assertEquals('alias1.field1 = :alias1_field1 AND alias1.field2 > :alias1_field2', (string) $qb->getDQLPart('where')); - $this->assertSame('value1', $qb->getParameter('alias1_field1')->getValue()); - $this->assertSame('value2', $qb->getParameter('alias1_field2')->getValue()); + $this->assertEquals('alias1.field1 = :field1 AND alias1.field2 > :field2', (string) $qb->getDQLPart('where')); + $this->assertSame('value1', $qb->getParameter('field1')->getValue()); + $this->assertSame('value2', $qb->getParameter('field2')->getValue()); } /** @@ -482,15 +495,17 @@ class QueryBuilderTest extends \Doctrine\Tests\OrmTestCase public function testAddCriteriaWhereWithMultipleParametersWithSubpathsAndSameProperty() { $qb = $this->_em->createQueryBuilder(); + $qb->select('alias1')->from('Doctrine\Tests\Models\CMS\CmsUser', 'alias1'); + $criteria = new Criteria(); - $criteria->where($criteria->expr()->eq('alias1.field1', 'value1')); - $criteria->andWhere($criteria->expr()->gt('alias1.field1', 'value2')); + $criteria->where($criteria->expr()->eq('field1', 'value1')); + $criteria->andWhere($criteria->expr()->gt('field1', 'value2')); $qb->addCriteria($criteria); - $this->assertEquals('alias1.field1 = :alias1_field1 AND alias1.field1 > :alias1_field1_1', (string) $qb->getDQLPart('where')); - $this->assertSame('value1', $qb->getParameter('alias1_field1')->getValue()); - $this->assertSame('value2', $qb->getParameter('alias1_field1_1')->getValue()); + $this->assertEquals('alias1.field1 = :field1 AND alias1.field1 > :field1_1', (string) $qb->getDQLPart('where')); + $this->assertSame('value1', $qb->getParameter('field1')->getValue()); + $this->assertSame('value2', $qb->getParameter('field1_1')->getValue()); } public function testAddCriteriaOrder()