Changeset 4455 for trunk/tests/Orm

Show
Ignore:
Timestamp:
05/28/08 07:01:04 (8 months ago)
Author:
guilhermeblanco
Message:

SelectExpression? rewrite to support dctrn queryComponent. Fixes in DQL. Added more test cases

Location:
trunk/tests/Orm/Query
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/tests/Orm/Query/LanguageRecognitionTest.php

    r4452 r4455  
    7272    { 
    7373        $this->assertValidDql('SELECT * FROM CmsUser'); 
     74 
     75        $this->assertValidDql('SELECT id FROM CmsUser'); 
    7476    } 
    7577 
    7678    public function testPlainFromClauseWithAlias() 
    7779    { 
    78         $this->assertValidDql('SELECT u.* FROM CmsUser u'); 
     80        $this->assertValidDql('SELECT u.id FROM CmsUser u'); 
    7981    } 
    8082 
  • trunk/tests/Orm/Query/SelectSqlGenerationTest.php

    r4452 r4455  
    4343            $entityManager = Doctrine_EntityManager::getManager(); 
    4444            $query = $entityManager->createQuery($dqlToBeTested); 
     45            //echo print_r($query->parse()->getQueryFields(), true) . "\n"; 
    4546 
    4647            parent::assertEquals($sqlToBeConfirmed, $query->getSql()); 
     
    5354 
    5455 
    55     public function testWithoutWhere() 
     56    public function testPlainFromClauseWithoutAlias() 
    5657    { 
    57         // NO WhereClause 
     58        $this->assertSqlGeneration( 
     59            'SELECT * FROM CmsUser', 
     60            'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE 1 = 1' 
     61        ); 
     62 
     63        $this->assertSqlGeneration( 
     64            'SELECT id FROM CmsUser', 
     65            'SELECT cu.id AS cu__id FROM cms_user cu WHERE 1 = 1' 
     66        ); 
     67    } 
     68 
     69 
     70    public function testPlainFromClauseWithAlias() 
     71    { 
    5872        $this->assertSqlGeneration( 
    5973            'SELECT u.id FROM CmsUser u',  
    6074            'SELECT cu.id AS cu__id FROM cms_user cu WHERE 1 = 1' 
    6175        ); 
     76    } 
    6277 
     78 
     79    public function testSelectSingleComponentWithAsterisk() 
     80    { 
    6381        $this->assertSqlGeneration( 
    6482            'SELECT u.* FROM CmsUser u',  
     
    6886 
    6987 
    70     public function testWithWhere() 
     88    public function testSelectSingleComponentWithMultipleColumns() 
    7189    { 
    72         // "WHERE" ConditionalExpression 
    73         // ConditionalExpression = ConditionalTerm {"OR" ConditionalTerm} 
    74         // ConditionalTerm       = ConditionalFactor {"AND" ConditionalFactor} 
    75         // ConditionalFactor     = ["NOT"] ConditionalPrimary 
    76         // ConditionalPrimary    = SimpleConditionalExpression | "(" ConditionalExpression ")" 
    77         // SimpleConditionalExpression 
    78         //                       = Expression (ComparisonExpression | BetweenExpression | LikeExpression 
    79         //                       | InExpression | NullComparisonExpression) | ExistsExpression 
     90        $this->assertSqlGeneration( 
     91            'SELECT u.username, u.name FROM CmsUser u',  
     92            'SELECT cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE 1 = 1' 
     93        ); 
     94    } 
    8095 
    81         // If this one test fail, all others will fail too. That's the simplest case possible 
     96/* 
     97    Not supported yet! 
     98 
     99    public function testSelectMultipleComponentsWithAsterisk() 
     100    { 
    82101        $this->assertSqlGeneration( 
    83             'SELECT u.* FROM CmsUser u WHERE id = ?',  
    84             'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE cu.id = ?' 
     102            'SELECT u.*, p.* FROM CmsUser u, u.phonenumbers p', 
     103            'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE 1 = 1' 
     104        ); 
     105    } 
     106*/ 
     107 
     108    public function testSelectDistinctIsSupported() 
     109    { 
     110        $this->assertSqlGeneration( 
     111            'SELECT DISTINCT u.name FROM CmsUser u', 
     112            'SELECT DISTINCT cu.name AS cu__name FROM cms_user cu WHERE 1 = 1' 
     113        ); 
     114    } 
     115 
     116 
     117    public function testAggregateFunctionInSelect() 
     118    { 
     119        $this->assertSqlGeneration( 
     120            'SELECT COUNT(u.id) FROM CmsUser u GROUP BY u.id', 
     121            'SELECT COUNT(cu.id) AS dctrn__0 FROM cms_user cu WHERE 1 = 1 GROUP BY cu.id' 
     122        ); 
     123    } 
     124 
     125    public function testAggregateFunctionWithDistinctInSelect() 
     126    { 
     127        $this->assertSqlGeneration( 
     128            'SELECT COUNT(DISTINCT u.name) FROM CmsUser u', 
     129            'SELECT COUNT(DISTINCT cu.name) AS dctrn__0 FROM cms_user cu WHERE 1 = 1' 
     130        ); 
     131    } 
     132 
     133 
     134    public function testFunctionalExpressionsSupportedInWherePart() 
     135    { 
     136        $this->assertSqlGeneration( 
     137            "SELECT u.name FROM CmsUser u WHERE TRIM(u.name) = 'someone'", 
     138            "SELECT cu.name AS cu__name FROM cms_user cu WHERE TRIM(cu.name) = ''someone''" // SQLite double slashes for strings 
     139        ); 
     140    } 
     141 
     142 
     143    public function testArithmeticExpressionsSupportedInWherePart() 
     144    { 
     145        $this->assertSqlGeneration( 
     146            'SELECT u.* FROM CmsUser u WHERE ((u.id + 5000) * u.id + 3) < 10000000', 
     147            'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE ((cu.id + 5000) * cu.id + 3) < 10000000' 
     148        ); 
     149    } 
     150 
     151 
     152    public function testInExpressionSupportedInWherePart() 
     153    { 
     154        $this->assertSqlGeneration( 
     155            'SELECT * FROM CmsUser WHERE CmsUser.id IN (1, 2)', 
     156            'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE cu.id IN (1, 2)' 
     157        ); 
     158    } 
     159 
     160 
     161    public function testNotInExpressionSupportedInWherePart() 
     162    { 
     163        $this->assertSqlGeneration( 
     164            'SELECT * FROM CmsUser WHERE CmsUser.id NOT IN (1)', 
     165            'SELECT cu.id AS cu__id, cu.status AS cu__status, cu.username AS cu__username, cu.name AS cu__name FROM cms_user cu WHERE cu.id NOT IN (1)' 
    85166        ); 
    86167    }