QueryWhereTestCase.php 5.17 KB
Newer Older
zYne's avatar
zYne committed
1 2 3 4 5 6 7
<?php
class Doctrine_Query_Where_TestCase extends Doctrine_UnitTestCase {
    public function prepareData() { }
    public function prepareTables() { 
        $this->tables = array('entity');
        parent::prepareTables();
    }
zYne's avatar
zYne committed
8

zYne's avatar
zYne committed
9
    public function testDirectParameterSetting() {
zYne's avatar
zYne committed
10 11 12 13 14 15 16
        $this->connection->clear();

        $user = new User();
        $user->name = 'someone';
        $user->save();

        $q = new Doctrine_Query();
zYne's avatar
zYne committed
17

zYne's avatar
zYne committed
18 19 20
        $q->from('User(id)')->addWhere('User.id = ?',1);

        $users = $q->execute();
zYne's avatar
zYne committed
21

zYne's avatar
zYne committed
22 23 24
        $this->assertEqual($users->count(), 1);
        $this->assertEqual($users[0]->name, 'someone');
    }
zYne's avatar
zYne committed
25
    public function testDirectMultipleParameterSetting() {
zYne's avatar
zYne committed
26
        $user = new User();
zYne's avatar
zYne committed
27
        $user->name = 'someone.2';
zYne's avatar
zYne committed
28 29 30
        $user->save();

        $q = new Doctrine_Query();
zYne's avatar
zYne committed
31

32
        $q->from('User(id)')->addWhere('User.id IN (?, ?)', array(1,2));
zYne's avatar
zYne committed
33 34

        $users = $q->execute();
zYne's avatar
zYne committed
35

zYne's avatar
zYne committed
36 37
        $this->assertEqual($users->count(), 2);
        $this->assertEqual($users[0]->name, 'someone');
zYne's avatar
zYne committed
38 39
        $this->assertEqual($users[1]->name, 'someone.2');
    }
40 41

    public function testNotInExpression() {
zYne's avatar
zYne committed
42 43
        $q = new Doctrine_Query();

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
        $q->from('User u')->addWhere('u.id NOT IN (?)', array(1));
        $users = $q->execute();

        $this->assertEqual($users->count(), 1);
        $this->assertEqual($users[0]->name, 'someone.2');
    }
    public function testExistsExpression() {
        $q = new Doctrine_Query();
        
        $user = new User();
        $user->name = 'someone with a group';
        $user->Group[0]->name = 'some group';
        $user->save();
        
        // find all users which have groups
        try {
            $q->from('User u')->where('EXISTS (FROM Groupuser(id) WHERE Groupuser.user_id = u.id)');
            $this->pass();
        } catch(Doctrine_Exception $e) {
            $this->fail();
        }
        $users = $q->execute();
        $this->assertEqual($users->count(), 1);
        $this->assertEqual($users[0]->name, 'someone with a group');
    }

    public function testNotExistsExpression() {
        $q = new Doctrine_Query();

        // find all users which don't have groups
        try {
            $q->from('User u')->where('NOT EXISTS (FROM Groupuser(id) WHERE Groupuser.user_id = u.id)');
            $this->pass();
        } catch(Doctrine_Exception $e) {
            $this->fail();
        }
        $users = $q->execute();
        $this->assertEqual($users->count(), 2);
        $this->assertEqual($users[0]->name, 'someone');
        $this->assertEqual($users[1]->name, 'someone.2');  
    }
    public function testComponentAliases() {
zYne's avatar
zYne committed
86 87
        $q = new Doctrine_Query();

88
        $q->from('User(id) u')->addWhere('u.id IN (?, ?)', array(1,2));
zYne's avatar
zYne committed
89 90 91 92
        $users = $q->execute();

        $this->assertEqual($users->count(), 2);
        $this->assertEqual($users[0]->name, 'someone');
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
        $this->assertEqual($users[1]->name, 'someone.2');             

    }
    public function testComponentAliases2() {
        $q = new Doctrine_Query();

        $q->from('User u')->addWhere('u.name = ?', array('someone'));

        $users = $q->execute();

        $this->assertEqual($users->count(), 1);
        $this->assertEqual($users[0]->name, 'someone');
    }
    public function testComponentAliases3() {

        $users = $this->connection->query("FROM User u WHERE u.name = ?", array('someone'));

        $this->assertEqual($users->count(), 1);
        $this->assertEqual($users[0]->name, 'someone');
zYne's avatar
zYne committed
112
    }
zYne's avatar
zYne committed
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
    public function testOperatorWithNoTrailingSpaces() {
        $q = new Doctrine_Query();
        
        $q->from('User(id)')->where("User.name='someone'");

        $users = $q->execute();
        $this->assertEqual($users->count(), 1);
        
        $this->assertEqual($q->getQuery(), "SELECT entity.id AS entity__id FROM entity WHERE entity.name = 'someone' AND (entity.type = 0)");
    }
    public function testOperatorWithNoTrailingSpaces2() {
        $q = new Doctrine_Query();
        
        $q->from('User(id)')->where("User.name='foo.bar'");

        $users = $q->execute();
        $this->assertEqual($users->count(), 0);
        
        $this->assertEqual($q->getQuery(), "SELECT entity.id AS entity__id FROM entity WHERE entity.name = 'foo.bar' AND (entity.type = 0)");
    }
    public function testOperatorWithSingleTrailingSpace() {
        $q = new Doctrine_Query();
        
        $q->from('User(id)')->where("User.name= 'foo.bar'");

        $users = $q->execute();
        $this->assertEqual($users->count(), 0);
        
        $this->assertEqual($q->getQuery(), "SELECT entity.id AS entity__id FROM entity WHERE entity.name = 'foo.bar' AND (entity.type = 0)");
    }
    public function testOperatorWithSingleTrailingSpace2() {
        $q = new Doctrine_Query();
        
        $q->from('User(id)')->where("User.name ='foo.bar'");

        $users = $q->execute();
        $this->assertEqual($users->count(), 0);
        
        $this->assertEqual($q->getQuery(), "SELECT entity.id AS entity__id FROM entity WHERE entity.name = 'foo.bar' AND (entity.type = 0)");
zYne's avatar
zYne committed
152
    }
153

zYne's avatar
zYne committed
154 155
}
?>