TableTestCase.php 7.52 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_Table_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_Table_TestCase extends Doctrine_UnitTestCase {
zYne's avatar
zYne committed
34 35 36 37
    public function prepareTables() {
        $this->tables[] = "FieldNameTest";
        parent::prepareTables();
    }
38

zYne's avatar
zYne committed
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
    public function testFieldConversion() {
        $this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);

        $t = new FieldNameTest();
        
        $t->someColumn = 'abc';
        $t->someEnum = 'php';
        $t->someInt = 1;
        $t->someArray = array();
        $obj = new StdClass();
        $t->someObject = $obj;

        $this->assertEqual($t->someColumn, 'abc');
        $this->assertEqual($t->someEnum, 'php');
        $this->assertEqual($t->someInt, 1);
        $this->assertEqual($t->someArray, array());
        $this->assertEqual($t->someObject, $obj);

        $t->save();

        $this->assertEqual($t->someColumn, 'abc');
        $this->assertEqual($t->someEnum, 'php');
        $this->assertEqual($t->someInt, 1);
        $this->assertEqual($t->someArray, array());
        $this->assertEqual($t->someObject, $obj);
64

zYne's avatar
zYne committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
        $t->refresh();
        
        $this->assertEqual($t->someColumn, 'abc');
        $this->assertEqual($t->someEnum, 'php');
        $this->assertEqual($t->someInt, 1);
        $this->assertEqual($t->someArray, array());
        $this->assertEqual($t->someObject, $obj);
        
        $this->connection->clear();
        
        $t = $this->connection->getTable('FieldNameTest')->find(1);
        
        $this->assertEqual($t->someColumn, 'abc');
        $this->assertEqual($t->someEnum, 'php');
        $this->assertEqual($t->someInt, 1);
        $this->assertEqual($t->someArray, array());
        $this->assertEqual($t->someObject, $obj);
82 83
        
        $this->dbh->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
zYne's avatar
zYne committed
84
    }
85

doctrine's avatar
doctrine committed
86
    public function testBind() {
zYne's avatar
zYne committed
87
        $table = $this->connection->getTable("User");
doctrine's avatar
doctrine committed
88
    }
doctrine's avatar
doctrine committed
89

90
    public function testGetIdentifier() {
zYne's avatar
zYne committed
91
        $table = $this->connection->getTable("User");
92
    }
doctrine's avatar
doctrine committed
93
    public function testGetForeignKey() {
94
        $fk = $this->objTable->getRelation("Group");
95
        $this->assertTrue($fk instanceof Doctrine_Relation_Association);
doctrine's avatar
doctrine committed
96
        $this->assertTrue($fk->getTable() instanceof Doctrine_Table);
97
        $this->assertTrue($fk->getType() == Doctrine_Relation::MANY_AGGREGATE);
doctrine's avatar
doctrine committed
98 99 100
        $this->assertTrue($fk->getLocal() == "user_id");
        $this->assertTrue($fk->getForeign() == "group_id");

101
        $fk = $this->objTable->getRelation("Email");
102
        $this->assertTrue($fk instanceof Doctrine_Relation_LocalKey);
doctrine's avatar
doctrine committed
103
        $this->assertTrue($fk->getTable() instanceof Doctrine_Table);
104
        $this->assertTrue($fk->getType() == Doctrine_Relation::ONE_COMPOSITE);
doctrine's avatar
doctrine committed
105
        $this->assertTrue($fk->getLocal() == "email_id");
106
        $this->assertTrue($fk->getForeign() == $fk->getTable()->getIdentifier());
doctrine's avatar
doctrine committed
107 108


109
        $fk = $this->objTable->getRelation("Phonenumber");
110
        $this->assertTrue($fk instanceof Doctrine_Relation_ForeignKey);
doctrine's avatar
doctrine committed
111
        $this->assertTrue($fk->getTable() instanceof Doctrine_Table);
112 113
        $this->assertTrue($fk->getType() == Doctrine_Relation::MANY_COMPOSITE);
        $this->assertTrue($fk->getLocal() == $this->objTable->getIdentifier());
doctrine's avatar
doctrine committed
114
        $this->assertTrue($fk->getForeign() == "entity_id");
zYne's avatar
zYne committed
115

doctrine's avatar
doctrine committed
116

doctrine's avatar
doctrine committed
117 118 119 120 121
    }
    public function testGetComponentName() {
        $this->assertTrue($this->objTable->getComponentName() == "User");
    } 
    public function testGetTableName() {
zYne's avatar
zYne committed
122
        $this->assertTrue($this->objTable->tableName == "entity");
doctrine's avatar
doctrine committed
123
    } 
zYne's avatar
zYne committed
124 125
    public function testGetConnection() {
        $this->assertTrue($this->objTable->getConnection() instanceof Doctrine_Connection);
doctrine's avatar
doctrine committed
126 127 128 129 130
    }
    public function testGetData() {
        $this->assertTrue($this->objTable->getData() == array());
    }
    public function testSetSequenceName() {
zYne's avatar
zYne committed
131 132 133
        $this->objTable->sequenceName = "test-seq";
        $this->assertEqual($this->objTable->sequenceName, "test-seq");
        $this->objTable->sequenceName = null;
doctrine's avatar
doctrine committed
134 135 136 137
    }
    public function testCreate() {
        $record = $this->objTable->create();
        $this->assertTrue($record instanceof Doctrine_Record);
zYne's avatar
zYne committed
138
        $this->assertTrue($record->state() == Doctrine_Record::STATE_TCLEAN);
doctrine's avatar
doctrine committed
139 140 141 142 143
    }
    public function testFind() {
        $record = $this->objTable->find(4);
        $this->assertTrue($record instanceof Doctrine_Record);
        
144 145 146 147
        try {
            $record = $this->objTable->find('4');
            $this->assertTrue($record instanceof Doctrine_Record);
        } catch(Exception $e) {
pookey's avatar
pookey committed
148
            $this->assertTrue(false);
149 150
        }

doctrine's avatar
doctrine committed
151 152
        try {
            $record = $this->objTable->find(123);
pookey's avatar
pookey committed
153
            $this->assertTrue($record === false);
154
        } catch(Exception $e) {
pookey's avatar
pookey committed
155
            $this->assertTrue(false);
156 157 158 159
        }

        try {
            $record = $this->objTable->find(null);
pookey's avatar
pookey committed
160
            $this->assertTrue($record === false);
161
        } catch(Exception $e) {
pookey's avatar
pookey committed
162
            $this->assertTrue(false);
163 164 165 166
        }

        try {
            $record = $this->objTable->find(false);
pookey's avatar
pookey committed
167
            $this->assertTrue($record === false);
doctrine's avatar
doctrine committed
168
        } catch(Exception $e) {
pookey's avatar
pookey committed
169
            $this->assertTrue(false);
doctrine's avatar
doctrine committed
170 171 172 173 174
        }
    }
    public function testFindAll() {
        $users = $this->objTable->findAll();
        $this->assertEqual($users->count(), 8);
175
        $this->assertTrue($users instanceof Doctrine_Collection);
doctrine's avatar
doctrine committed
176
    }
zYne's avatar
zYne committed
177 178
    public function testFindByDql() {
        $users = $this->objTable->findByDql("name LIKE '%Arnold%'");
doctrine's avatar
doctrine committed
179
        $this->assertEqual($users->count(), 1);
180
        $this->assertTrue($users instanceof Doctrine_Collection);
doctrine's avatar
doctrine committed
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
    }
    public function testGetProxy() {
        $user = $this->objTable->getProxy(4);
        $this->assertTrue($user instanceof Doctrine_Record);

        try {
            $record = $this->objTable->find(123);
        } catch(Exception $e) {
            $this->assertTrue($e instanceOf Doctrine_Find_Exception);
        }
    }
    public function testGetColumns() {
        $columns = $this->objTable->getColumns();
        $this->assertTrue(is_array($columns));

    }
    public function testApplyInheritance() {
198
        $this->assertEqual($this->objTable->applyInheritance("id = 3"), "id = 3 AND type = ?");
doctrine's avatar
doctrine committed
199
    }
200

doctrine's avatar
doctrine committed
201 202
}
?>