ConnectionTestCase.php 8.18 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 {
zYne's avatar
zYne committed
34

35 36 37 38 39 40 41 42 43 44 45 46 47 48
    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);
49
    }
zYne's avatar
zYne committed
50
    public function testFetchAll() {
zYne's avatar
zYne committed
51 52
        $this->conn->exec('DROP TABLE entity');
        $this->conn->exec('CREATE TABLE entity (id INT, name TEXT)');
53

zYne's avatar
zYne committed
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 130
        $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
131
        $this->conn->exec('DROP TABLE entity');
zYne's avatar
zYne committed
132
    }
doctrine's avatar
doctrine committed
133
    public function testGetManager() {
134
        $this->assertTrue($this->connection->getManager() === $this->manager);
doctrine's avatar
doctrine committed
135 136
    }
    public function testDelete() {
zYne's avatar
zYne committed
137
        $user = $this->connection->create('User');
zYne's avatar
zYne committed
138
        $this->connection->unitOfWork->delete($user);
zYne's avatar
zYne committed
139
        $this->assertEqual($user->state(),Doctrine_Record::STATE_TCLEAN);
doctrine's avatar
doctrine committed
140 141
    }
    public function testGetTable() {
zYne's avatar
zYne committed
142
        $table = $this->connection->getTable('Group');
doctrine's avatar
doctrine committed
143 144
        $this->assertTrue($table instanceof Doctrine_Table);
        try {
zYne's avatar
zYne committed
145
            $table = $this->connection->getTable('Unknown');
doctrine's avatar
doctrine committed
146 147 148 149 150 151
            $f = false;
        } catch(Doctrine_Exception $e) {
            $f = true;
        }
        $this->assertTrue($f);

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

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