Changeset 4431 for trunk/tests/Orm

Show
Ignore:
Timestamp:
05/24/08 23:04:14 (8 months ago)
Author:
guilhermeblanco
Message:

Added more semantical checks. Fixed some tests.

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

Legend:

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

    r4422 r4431  
    103103            $q->getSql(); 
    104104            $this->fail("Invalid DQL '$invalidDql' was not rejected."); 
    105         } catch (Doctrine_Query_Parser_Exception $parseEx) {} 
    106  
    107         $invalidDql = 'DELETE FROM hey.boy'; 
     105        } catch (Doctrine_Exception $parseEx) {} 
     106        $q->free(); 
     107 
     108        $invalidDql = 'DELETE FROM CmsUser.articles'; 
    108109        $q->setDql($invalidDql); 
    109110        try { 
    110111            $q->getSql(); 
    111112            $this->fail("Invalid DQL '$invalidDql' was not rejected."); 
    112         } catch (Doctrine_Query_Parser_Exception $parseEx) {} 
    113  
    114         $invalidDql = 'DELETE FROM CmsUser cu WHERE cu.my.thing > ?'; 
     113        } catch (Doctrine_Exception $parseEx) {} 
     114        $q->free(); 
     115 
     116        $invalidDql = 'DELETE FROM CmsUser cu WHERE cu.articles.id > ?'; 
    115117        $q->setDql($invalidDql); 
    116118        try { 
    117119            $q->getSql(); 
    118120            $this->fail("Invalid DQL '$invalidDql' was not rejected."); 
    119         } catch (Doctrine_Relation_Exception $parseEx) {} 
    120  
     121        } catch (Doctrine_Exception $parseEx) {} 
     122        $q->free(); 
    121123    } 
    122124 
  • trunk/tests/Orm/Query/LanguageRecognitionTest.php

    r4425 r4431  
    11<?php 
     2 
     3/* 
     4 *  $Id$ 
     5 * 
     6 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
     7 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
     8 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
     9 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
     10 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
     11 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
     12 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
     13 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
     14 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
     15 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
     16 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
     17 * 
     18 * This software consists of voluntary contributions made by many individuals 
     19 * and is licensed under the LGPL. For more information, see 
     20 * <http://www.phpdoctrine.org>. 
     21 */ 
     22require_once 'lib/DoctrineTestInit.php'; 
     23/** 
     24 * Test case for testing the saving and referencing of query identifiers. 
     25 * 
     26 * @package     Doctrine 
     27 * @subpackage  Query 
     28 * @author      Guilherme Blanco <guilhermeblanco@hotmail.com> 
     29 * @author      Janne Vanhala <jpvanhal@cc.hut.fi> 
     30 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi> 
     31 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL 
     32 * @link        http://www.phpdoctrine.org 
     33 * @since       1.0 
     34 * @version     $Revision$ 
     35 * @todo        1) [romanb] We  might want to split the SQL generation tests into multiple 
     36 *              testcases later since we'll have a lot of them and we might want to have special SQL 
     37 *              generation tests for some dbms specific SQL syntaxes. 
     38 */ 
    239class Orm_Query_LanguageRecognitionTest extends Doctrine_OrmTestCase 
    340{ 
     
    4885    public function testInvalidSelectSingleComponentWithAsterisk() 
    4986    { 
    50         $this->assertValidDql('SELECT p.* FROM CmsUser u'); 
     87        $this->assertInvalidDql('SELECT p.* FROM CmsUser u'); 
    5188    } 
    5289 
     
    98135    public function testExistsExpressionSupportedInWherePart() 
    99136    { 
    100         $this->assertValidDql('SELECT * FROM CmsUser u WHERE EXISTS (SELECT p.user_id FROM CmsPhonenumber p WHERE p.user_id = u.id)'); 
     137        $this->assertValidDql('SELECT u.* FROM CmsUser u WHERE EXISTS (SELECT p.user_id FROM CmsPhonenumber p WHERE p.user_id = u.id)'); 
    101138    } 
    102139 
    103140    public function testNotExistsExpressionSupportedInWherePart() 
    104141    { 
    105         $this->assertValidDql('SELECT * FROM CmsUser u WHERE NOT EXISTS (SELECT p.user_id FROM CmsPhonenumber p WHERE p.user_id = u.id)'); 
     142        $this->assertValidDql('SELECT u.* FROM CmsUser u WHERE NOT EXISTS (SELECT p.user_id FROM CmsPhonenumber p WHERE p.user_id = u.id)'); 
    106143    } 
    107144 
     
    148185    } 
    149186*/ 
     187 
    150188    public function testAdditionExpression() 
    151189    { 
     
    191229    public function testLeftJoin() 
    192230    { 
    193         $this->assertValidDql('SELECT * FROM CmsUser u LEFT JOIN u.phonenumbers'); 
     231        $this->assertValidDql('SELECT u.*, p.* FROM CmsUser u LEFT JOIN u.phonenumbers p'); 
    194232    } 
    195233 
     
    201239    public function testInnerJoin() 
    202240    { 
    203         $this->assertValidDql('SELECT * FROM CmsUser u INNER JOIN u.phonenumbers'); 
     241        $this->assertValidDql('SELECT u.*, u.phonenumbers.* FROM CmsUser u INNER JOIN u.phonenumbers'); 
    204242    } 
    205243 
    206244    public function testMultipleLeftJoin() 
    207245    { 
    208         $this->assertValidDql('SELECT * FROM CmsUser u LEFT JOIN u.articles LEFT JOIN u.phonenumbers'); 
     246        $this->assertValidDql('SELECT u.articles.*, u.phonenumbers.* FROM CmsUser u LEFT JOIN u.articles LEFT JOIN u.phonenumbers'); 
    209247    } 
    210248 
     
    223261        $this->assertValidDql('SELECT u.name, a.topic, p.phonenumber FROM CmsUser u INNER JOIN u.articles a LEFT JOIN u.phonenumbers p'); 
    224262    } 
    225 /* 
     263 
    226264    public function testMixingOfJoins2() 
    227265    { 
    228         $this->assertValidDql('SELECT u.name, u.articles.topic, c.text FROM CmsUser u INNER JOIN u.articles.comments c'); 
    229     } 
    230 */ 
     266        $this->assertInvalidDql('SELECT u.name, u.articles.topic, c.text FROM CmsUser u INNER JOIN u.articles.comments c'); 
     267    } 
     268 
    231269    public function testOrderBySingleColumn() 
    232270    { 
     
    253291        $this->assertValidDql('SELECT u.name FROM CmsUser u ORDER BY COALESCE(u.id, u.name) DESC'); 
    254292    } 
    255  
     293/* 
    256294    public function testSubselectInInExpression() 
    257295    { 
    258296        $this->assertValidDql("SELECT * FROM CmsUser u WHERE u.id NOT IN (SELECT u2.id FROM CmsUser u2 WHERE u2.name = 'zYne')"); 
    259297    } 
    260 /* 
     298 
    261299    public function testSubselectInSelectPart() 
    262300    { 
     
    281319    } 
    282320*/ 
     321 
    283322    public function testJoinConditionsSupported() 
    284323    { 
     
    293332    public function testIndexBySupportsJoins() 
    294333    { 
    295         $this->assertValidDql('SELECT * FROM CmsUser u LEFT JOIN u.articles INDEX BY id'); // INDEX BY is now referring to articles 
     334        $this->assertValidDql('SELECT u.*, u.articles.* FROM CmsUser u LEFT JOIN u.articles INDEX BY id'); // INDEX BY is now referring to articles 
    296335    } 
    297336 
    298337    public function testIndexBySupportsJoins2() 
    299338    { 
    300         $this->assertValidDql('SELECT * FROM CmsUser u INDEX BY id LEFT JOIN u.phonenumbers p INDEX BY phonenumber'); 
     339        $this->assertValidDql('SELECT u.*, u.phonenumbers.* FROM CmsUser u INDEX BY id LEFT JOIN u.phonenumbers p INDEX BY phonenumber'); 
    301340    } 
    302341 
     
    343382        $this->assertValidDql("SELECT u.id FROM CmsUser u WHERE u.name LIKE 'z|%' ESCAPE '|'"); 
    344383    } 
     384 
    345385}