ConnectionTestCase.php 8.16 KB
Newer Older
doctrine's avatar
doctrine committed
1
<?php
zYne's avatar
zYne committed
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
/*
 *  $Id$
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.phpdoctrine.com>.
 */

/**
 * Doctrine_Connection_TestCase
 *
 * @package     Doctrine
 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
 * @category    Object Relational Mapping
 * @link        www.phpdoctrine.com
 * @since       1.0
 * @version     $Revision$
 */
class Doctrine_Connection_TestCase extends Doctrine_UnitTestCase {
34 35 36 37 38 39 40 41 42 43 44 45 46 47
    public function testUnknownModule() {
        try {
            $this->connection->unknown;
            $this->fail();
        } catch(Doctrine_Connection_Exception $e) {
            $this->pass();
        }
    }
    public function testGetModule() {
        $this->assertTrue($this->connection->unitOfWork instanceof Doctrine_Connection_UnitOfWork);
        //$this->assertTrue($this->connection->dataDict instanceof Doctrine_DataDict);
        $this->assertTrue($this->connection->expression instanceof Doctrine_Expression);
        $this->assertTrue($this->connection->transaction instanceof Doctrine_Transaction);
        $this->assertTrue($this->connection->export instanceof Doctrine_Export);
48
    }
zYne's avatar
zYne committed
49 50 51
    public function testFetchAll() {  
        $this->conn->exec('DROP TABLE entity');
        $this->conn->exec('CREATE TABLE entity (id INT, name TEXT)');
52

zYne's avatar
zYne committed
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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
        $this->conn->exec("INSERT INTO entity (id, name) VALUES (1, 'zYne')");
        $this->conn->exec("INSERT INTO entity (id, name) VALUES (2, 'John')");

        $a = $this->conn->fetchAll('SELECT * FROM entity');


        $this->assertEqual($a, array (
                            0 =>
                            array (
                              'id' => '1',
                              'name' => 'zYne',
                            ),
                            1 =>
                            array (
                              'id' => '2',
                              'name' => 'John',
                            ),
                          ));
    }
    public function testFetchOne() {
        $c = $this->conn->fetchOne('SELECT COUNT(1) FROM entity');
        
        $this->assertEqual($c, 2);
        
        $c = $this->conn->fetchOne('SELECT COUNT(1) FROM entity WHERE id = ?', array(1));
        
        $this->assertEqual($c, 1);
    }
    
    public function testFetchAssoc() {

    }
    public function testFetchColumn() {
        $a = $this->conn->fetchColumn('SELECT * FROM entity');

        $this->assertEqual($a, array (
                              0 => '1',
                              1 => '2',
                            ));

        $a = $this->conn->fetchColumn('SELECT * FROM entity WHERE id = ?', array(1));

        $this->assertEqual($a, array (
                              0 => '1',
                            ));
    }
    public function testFetchArray() {
        $a = $this->conn->fetchArray('SELECT * FROM entity');

        $this->assertEqual($a, array (
                              0 => '1',
                              1 => 'zYne',
                            ));

        $a = $this->conn->fetchArray('SELECT * FROM entity WHERE id = ?', array(1));

        $this->assertEqual($a, array (
                              0 => '1',
                              1 => 'zYne',
                            ));
    }
    public function testFetchRow() {
        $c = $this->conn->fetchRow('SELECT * FROM entity');

        $this->assertEqual($c, array (
                              'id' => '1',
                              'name' => 'zYne',
                            ));
                            
        $c = $this->conn->fetchRow('SELECT * FROM entity WHERE id = ?', array(1));
        
        $this->assertEqual($c, array (
                              'id' => '1',
                              'name' => 'zYne',
                            ));
    }
    public function testFetchPairs() {
zYne's avatar
zYne committed
130
        $this->conn->exec('DROP TABLE entity');
zYne's avatar
zYne committed
131
    }
doctrine's avatar
doctrine committed
132
    public function testGetManager() {
zYne's avatar
zYne committed
133
        $this->assertEqual($this->connection->getManager(),$this->manager);
doctrine's avatar
doctrine committed
134 135
    }
    public function testDelete() {
zYne's avatar
zYne committed
136
        $user = $this->connection->create('User');
zYne's avatar
zYne committed
137
        $this->connection->delete($user);
zYne's avatar
zYne committed
138
        $this->assertEqual($user->state(),Doctrine_Record::STATE_TCLEAN);
doctrine's avatar
doctrine committed
139 140
    }
    public function testGetTable() {
zYne's avatar
zYne committed
141
        $table = $this->connection->getTable('Group');
doctrine's avatar
doctrine committed
142 143
        $this->assertTrue($table instanceof Doctrine_Table);
        try {
zYne's avatar
zYne committed
144
            $table = $this->connection->getTable('Unknown');
doctrine's avatar
doctrine committed
145 146 147 148 149 150
            $f = false;
        } catch(Doctrine_Exception $e) {
            $f = true;
        }
        $this->assertTrue($f);

zYne's avatar
zYne committed
151
        $table = $this->connection->getTable('User');
doctrine's avatar
doctrine committed
152 153 154 155
        $this->assertTrue($table instanceof UserTable);

    }
    public function testCreate() {
zYne's avatar
zYne committed
156
        $email = $this->connection->create('Email');
doctrine's avatar
doctrine committed
157 158
        $this->assertTrue($email instanceof Email);
    }
zYne's avatar
zYne committed
159 160
    public function testGetDbh() {
        $this->assertTrue($this->connection->getDBH() instanceof Doctrine_Db);
doctrine's avatar
doctrine committed
161 162
    }
    public function testCount() {
zYne's avatar
zYne committed
163
        $this->assertTrue(is_integer(count($this->connection)));
doctrine's avatar
doctrine committed
164 165
    }
    public function testGetIterator() {
zYne's avatar
zYne committed
166
        $this->assertTrue($this->connection->getIterator() instanceof ArrayIterator);
doctrine's avatar
doctrine committed
167 168
    }
    public function testGetState() {
169
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Transaction::STATE_SLEEP);
zYne's avatar
zYne committed
170
        $this->assertEqual(Doctrine_Lib::getConnectionStateAsString($this->connection->transaction->getState()), 'open');
doctrine's avatar
doctrine committed
171 172
    }
    public function testGetTables() {
zYne's avatar
zYne committed
173
        $this->assertTrue(is_array($this->connection->getTables()));
doctrine's avatar
doctrine committed
174 175
    }
    public function testRollback() {
zYne's avatar
zYne committed
176
        $this->connection->beginTransaction();
177
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
178
        $this->assertEqual($this->connection->transaction->getState(), Doctrine_Transaction::STATE_ACTIVE);
zYne's avatar
zYne committed
179
        $this->connection->rollback();
180
        $this->assertEqual($this->connection->transaction->getState(), Doctrine_Transaction::STATE_SLEEP);
181
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
doctrine's avatar
doctrine committed
182 183
    }
    public function testNestedTransactions() {
184
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
zYne's avatar
zYne committed
185
        $this->connection->beginTransaction();
186
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
187
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Transaction::STATE_ACTIVE);
zYne's avatar
zYne committed
188
        $this->connection->beginTransaction();
189
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Transaction::STATE_BUSY);
190
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),2);
zYne's avatar
zYne committed
191
        $this->connection->commit();
192
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Transaction::STATE_ACTIVE);
193
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
zYne's avatar
zYne committed
194
        $this->connection->commit();
195
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Transaction::STATE_SLEEP);
196
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
doctrine's avatar
doctrine committed
197 198 199
    }
}
?>