ConnectionTestCase.php 10.4 KB
Newer Older
doctrine's avatar
doctrine committed
1
<?php
2
require_once("UnitTestCase.php");
zYne's avatar
zYne committed
3
class Doctrine_ConnectionTestCase extends Doctrine_UnitTestCase {
4 5 6 7 8
    public function testBulkInsert() {
        $u1 = new User();
        $u1->name = "Jean Reno";
        $u1->save();

9
        $id = $u1->obtainIdentifier();
10
        $u1->delete();
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
    }
    
    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);
27
    }
28

doctrine's avatar
doctrine committed
29
    public function testFlush() {
zYne's avatar
zYne committed
30
        $user = $this->connection->getTable("User")->find(4);
31
        $this->assertTrue(is_numeric($user->Phonenumber[0]->entity_id));
doctrine's avatar
doctrine committed
32

zYne's avatar
zYne committed
33 34 35
        $user    = $this->connection->create("Email");
        $user    = $this->connection->create("User");
        $record  = $this->connection->create("Phonenumber");
doctrine's avatar
doctrine committed
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

        $user->Email->address = "example@drinkmore.info";
        $this->assertTrue($user->email_id instanceof Email);

        $user->name = "Example user";
        $user->Group[0]->name = "Example group 1";
        $user->Group[1]->name = "Example group 2";

        $user->Phonenumber[0]->phonenumber = "123 123";

        $user->Phonenumber[1]->phonenumber = "321 2132";
        $user->Phonenumber[2]->phonenumber = "123 123";
        $user->Phonenumber[3]->phonenumber = "321 2132";



        $this->assertTrue($user->Phonenumber[0]->entity_id instanceof User);
        $this->assertTrue($user->Phonenumber[2]->entity_id instanceof User);

zYne's avatar
zYne committed
55
        $this->connection->flush();
doctrine's avatar
doctrine committed
56

doctrine's avatar
doctrine committed
57
        $this->assertTrue(is_numeric($user->Phonenumber[0]->entity_id));
doctrine's avatar
doctrine committed
58 59

        $this->assertEqual(count($user->Group), 2);
doctrine's avatar
doctrine committed
60
        $user2 = $user;
doctrine's avatar
doctrine committed
61

62
        $user = $this->objTable->find($user->id);
doctrine's avatar
doctrine committed
63

64
        $this->assertEqual($user->id, $user2->id);
doctrine's avatar
doctrine committed
65

66
        $this->assertTrue(is_numeric($user->id));
doctrine's avatar
doctrine committed
67
        $this->assertTrue(is_numeric($user->email_id));
doctrine's avatar
doctrine committed
68

doctrine's avatar
doctrine committed
69
        $this->assertTrue(is_numeric($user->Phonenumber[0]->entity_id));
doctrine's avatar
doctrine committed
70 71
        $this->assertTrue($user->Phonenumber->count(), 4);
        $this->assertEqual($user->Group->count(), 2);
zYne's avatar
zYne committed
72

doctrine's avatar
doctrine committed
73 74 75

        $user = $this->objTable->find(5);

zYne's avatar
zYne committed
76
        $pf   = $this->connection->getTable("Phonenumber");
doctrine's avatar
doctrine committed
77 78 79 80 81 82 83 84 85

        $this->assertTrue($user->Phonenumber instanceof Doctrine_Collection);
        $this->assertTrue($user->Phonenumber->count() == 3);

        $coll = new Doctrine_Collection($pf);

        $user->Phonenumber = $coll;
        $this->assertTrue($user->Phonenumber->count() == 0);

zYne's avatar
zYne committed
86
        $this->connection->flush();
doctrine's avatar
doctrine committed
87 88 89 90 91 92 93 94
        unset($user);
        $user = $this->objTable->find(5);

        $this->assertEqual($user->Phonenumber->count(), 0);

        // ADDING REFERENCES

        $user->Phonenumber[0]->phonenumber = "123 123";
doctrine's avatar
doctrine committed
95
        $this->assertTrue(is_numeric($user->Phonenumber[0]->entity_id));
doctrine's avatar
doctrine committed
96 97

        $user->Phonenumber[1]->phonenumber = "123 123";
zYne's avatar
zYne committed
98
        $this->connection->flush();
doctrine's avatar
doctrine committed
99 100


101
        $this->assertEqual($user->Phonenumber->count(), 2);
doctrine's avatar
doctrine committed
102 103 104 105 106 107

        unset($user);
        $user = $this->objTable->find(5);
        $this->assertEqual($user->Phonenumber->count(), 2);

        $user->Phonenumber[3]->phonenumber = "123 123";
zYne's avatar
zYne committed
108
        $this->connection->flush();
doctrine's avatar
doctrine committed
109

110
        $this->assertEqual($user->Phonenumber->count(), 3);
doctrine's avatar
doctrine committed
111 112
        unset($user);
        $user = $this->objTable->find(5);
113
        $this->assertEqual($user->Phonenumber->count(), 3);
doctrine's avatar
doctrine committed
114 115 116 117 118

        // DELETING REFERENCES

        $user->Phonenumber->delete();

119
        $this->assertEqual($user->Phonenumber->count(), 0);
doctrine's avatar
doctrine committed
120 121
        unset($user);
        $user = $this->objTable->find(5);
122
        $this->assertEqual($user->Phonenumber->count(), 0);
doctrine's avatar
doctrine committed
123 124 125 126 127 128 129
        
        // ADDING REFERENCES WITH STRING KEYS

        $user->Phonenumber["home"]->phonenumber = "123 123";
        $user->Phonenumber["work"]->phonenumber = "444 444";

        $this->assertEqual($user->Phonenumber->count(), 2);
zYne's avatar
zYne committed
130
        $this->connection->flush();
doctrine's avatar
doctrine committed
131

132
        $this->assertEqual($user->Phonenumber->count(), 2);
doctrine's avatar
doctrine committed
133 134
        unset($user);
        $user = $this->objTable->find(5);
135
        $this->assertEqual($user->Phonenumber->count(), 2);
doctrine's avatar
doctrine committed
136 137 138 139 140 141 142 143 144 145 146 147 148

        // REPLACING ONE-TO-MANY REFERENCE

        unset($coll);
        $coll = new Doctrine_Collection($pf);
        $coll[0]->phonenumber = "123 123";
        $coll["home"]->phonenumber = "444 444";
        $coll["work"]->phonenumber = "444 444";




        $user->Phonenumber = $coll;
zYne's avatar
zYne committed
149
        $this->connection->flush();
doctrine's avatar
doctrine committed
150 151 152 153 154 155 156 157 158
        $this->assertEqual($user->Phonenumber->count(), 3);
        $user = $this->objTable->find(5);
        $this->assertEqual($user->Phonenumber->count(), 3);

        
        // ONE-TO-ONE REFERENCES

        $user->Email->address = "drinker@drinkmore.info";
        $this->assertTrue($user->Email instanceof Email);
zYne's avatar
zYne committed
159
        $this->connection->flush();
doctrine's avatar
doctrine committed
160 161 162
        $this->assertTrue($user->Email instanceof Email);
        $user = $this->objTable->find(5);
        $this->assertEqual($user->Email->address, "drinker@drinkmore.info");
163
        $id = $user->Email->id;
doctrine's avatar
doctrine committed
164 165 166

        // REPLACING ONE-TO-ONE REFERENCES

zYne's avatar
zYne committed
167
        $email = $this->connection->create("Email");
doctrine's avatar
doctrine committed
168 169 170 171 172
        $email->address = "absolutist@nottodrink.com";
        $user->Email = $email;

        $this->assertTrue($user->Email instanceof Email);
        $this->assertEqual($user->Email->address, "absolutist@nottodrink.com");
zYne's avatar
zYne committed
173
        $this->connection->flush();
doctrine's avatar
doctrine committed
174 175 176 177 178 179
        unset($user);

        $user = $this->objTable->find(5);
        $this->assertTrue($user->Email instanceof Email);
        $this->assertEqual($user->Email->address, "absolutist@nottodrink.com");
        
zYne's avatar
zYne committed
180
        $emails = $this->connection->query("FROM Email WHERE Email.id = $id");
doctrine's avatar
doctrine committed
181
        //$this->assertEqual(count($emails),0);
doctrine's avatar
doctrine committed
182 183 184 185 186


    }

    public function testGetManager() {
zYne's avatar
zYne committed
187
        $this->assertEqual($this->connection->getManager(),$this->manager);
doctrine's avatar
doctrine committed
188 189
    }
    public function testQuery() {
zYne's avatar
zYne committed
190
        $this->assertTrue($this->connection->query("FROM User") instanceof Doctrine_Collection);
doctrine's avatar
doctrine committed
191 192 193
    }

    public function testDelete() {
zYne's avatar
zYne committed
194 195
        $user = $this->connection->create("User");
        $this->connection->delete($user);
doctrine's avatar
doctrine committed
196 197 198
        $this->assertEqual($user->getState(),Doctrine_Record::STATE_TCLEAN);
    }
    public function testGetTable() {
zYne's avatar
zYne committed
199
        $table = $this->connection->getTable("Group");
doctrine's avatar
doctrine committed
200 201
        $this->assertTrue($table instanceof Doctrine_Table);
        try {
zYne's avatar
zYne committed
202
            $table = $this->connection->getTable("Unknown");
doctrine's avatar
doctrine committed
203 204 205 206 207 208
            $f = false;
        } catch(Doctrine_Exception $e) {
            $f = true;
        }
        $this->assertTrue($f);

zYne's avatar
zYne committed
209
        $table = $this->connection->getTable("User");
doctrine's avatar
doctrine committed
210 211 212 213
        $this->assertTrue($table instanceof UserTable);

    }
    public function testCreate() {
zYne's avatar
zYne committed
214
        $email = $this->connection->create("Email");
doctrine's avatar
doctrine committed
215 216
        $this->assertTrue($email instanceof Email);
    }
zYne's avatar
zYne committed
217 218
    public function testGetDbh() {
        $this->assertTrue($this->connection->getDBH() instanceof Doctrine_Db);
doctrine's avatar
doctrine committed
219 220
    }
    public function testCount() {
zYne's avatar
zYne committed
221
        $this->assertTrue(is_integer(count($this->connection)));
doctrine's avatar
doctrine committed
222 223
    }
    public function testGetIterator() {
zYne's avatar
zYne committed
224
        $this->assertTrue($this->connection->getIterator() instanceof ArrayIterator);
doctrine's avatar
doctrine committed
225 226
    }
    public function testGetState() {
227 228
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_OPEN);
        $this->assertEqual(Doctrine_Lib::getConnectionStateAsString($this->connection->transaction->getState()), "open");
doctrine's avatar
doctrine committed
229 230
    }
    public function testGetTables() {
zYne's avatar
zYne committed
231
        $this->assertTrue(is_array($this->connection->getTables()));
doctrine's avatar
doctrine committed
232 233 234 235
    }

    public function testTransactions() {

zYne's avatar
zYne committed
236
        $this->connection->beginTransaction();
237
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_ACTIVE);
zYne's avatar
zYne committed
238
        $this->connection->commit();
239
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_OPEN);
doctrine's avatar
doctrine committed
240

zYne's avatar
zYne committed
241
        $this->connection->beginTransaction();
doctrine's avatar
doctrine committed
242 243 244 245
        
        $user = $this->objTable->find(6);
        
        $user->name = "Jack Daniels";
zYne's avatar
zYne committed
246 247
        $this->connection->flush();
        $this->connection->commit();
doctrine's avatar
doctrine committed
248 249 250 251 252 253 254

        $user = $this->objTable->find(6);
        $this->assertEqual($user->name, "Jack Daniels");

    }

    public function testRollback() {
zYne's avatar
zYne committed
255
        $this->connection->beginTransaction();
256 257
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
        $this->assertEqual($this->connection->transaction->getState(), Doctrine_Connection_Transaction::STATE_ACTIVE);
zYne's avatar
zYne committed
258
        $this->connection->rollback();
259 260
        $this->assertEqual($this->connection->transaction->getState(), Doctrine_Connection_Transaction::STATE_OPEN);
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
doctrine's avatar
doctrine committed
261 262
    }
    public function testNestedTransactions() {
263
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
zYne's avatar
zYne committed
264
        $this->connection->beginTransaction();
265 266
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_ACTIVE);
zYne's avatar
zYne committed
267
        $this->connection->beginTransaction();
268 269
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_BUSY);
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),2);
zYne's avatar
zYne committed
270
        $this->connection->commit();
271 272
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_ACTIVE);
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),1);
zYne's avatar
zYne committed
273
        $this->connection->commit();
274 275
        $this->assertEqual($this->connection->transaction->getState(),Doctrine_Connection_Transaction::STATE_OPEN);
        $this->assertEqual($this->connection->transaction->getTransactionLevel(),0);
doctrine's avatar
doctrine committed
276 277 278
    }
}
?>