ConfigurableTestCase.php 9.34 KB
Newer Older
doctrine's avatar
doctrine committed
1
<?php
2
require_once("UnitTestCase.php");
doctrine's avatar
doctrine committed
3

4
class Doctrine_Configurable_TestCase extends Doctrine_UnitTestCase {
5 6
    public function prepareTables() { }
    public function prepareData() { }
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 34 35 36 37 38 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 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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156

    public function testGetIndexNameFormatAttribute() {
        // default index name format is %_idx
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_IDXNAME_FORMAT), '%_idx');
    }
    public function testGetSequenceNameFormatAttribute() {
        // default sequence name format is %_seq
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_SEQNAME_FORMAT), '%_seq');
    }
    public function testSetIndexNameFormatAttribute() {
        $this->manager->setAttribute(Doctrine::ATTR_IDXNAME_FORMAT, '%_index');

        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_IDXNAME_FORMAT), '%_index');
    }
    public function testSetSequenceNameFormatAttribute() {
        $this->manager->setAttribute(Doctrine::ATTR_SEQNAME_FORMAT, '%_sequence');

        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_SEQNAME_FORMAT), '%_sequence');
    }
    public function testExceptionIsThrownWhenSettingIndexNameFormatAttributeAtTableLevel() {
        try {
            $this->connection->getTable('Entity')->setAttribute(Doctrine::ATTR_IDXNAME_FORMAT, '%_idx');
            $this->fail();
        } catch(Doctrine_Exception $e) {
            $this->pass();
        }
    }
    public function testExceptionIsThrownWhenSettingSequenceNameFormatAttributeAtTableLevel() {
        try {
            $this->connection->getTable('Entity')->setAttribute(Doctrine::ATTR_SEQNAME_FORMAT, '%_seq');
            $this->fail();
        } catch(Doctrine_Exception $e) {
            $this->pass();
        }
    }
    public function testSettingFieldCaseIsSuccesfulWithZero() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_FIELD_CASE, 0);
            $this->pass();
        } catch(Doctrine_Exception $e) {
            $this->fail();
        }
    }
    public function testSettingFieldCaseIsSuccesfulWithCaseConstants() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_FIELD_CASE, CASE_LOWER);
            $this->pass();
        } catch(Doctrine_Exception $e) {
            $this->fail();
        }
    }
    public function testSettingFieldCaseIsSuccesfulWithCaseConstants2() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_FIELD_CASE, CASE_UPPER);
            $this->pass();
        } catch(Doctrine_Exception $e) {
            $this->fail();
        }
    }
    public function testExceptionIsThrownWhenSettingFieldCaseToNotZeroOneOrTwo() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_FIELD_CASE, -1);
            $this->fail();
        } catch(Doctrine_Exception $e) {
            $this->pass();
        }
    }
    public function testExceptionIsThrownWhenSettingFieldCaseToNotZeroOneOrTwo2() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_FIELD_CASE, 5);
            $this->fail();
        } catch(Doctrine_Exception $e) {
            $this->pass();
        }
    }
    public function testDefaultQuoteIdentifierAttributeValueIsFalse() {
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_QUOTE_IDENTIFIER), false);
    }
    public function testQuoteIdentifierAttributeAcceptsBooleans() {
        $this->manager->setAttribute(Doctrine::ATTR_QUOTE_IDENTIFIER, true);

        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_QUOTE_IDENTIFIER), true);
    }
    public function testDefaultSequenceColumnNameAttributeValueIsId() {
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_SEQCOL_NAME), 'id');
    }
    public function testSequenceColumnNameAttributeAcceptsStrings() {
        $this->manager->setAttribute(Doctrine::ATTR_SEQCOL_NAME, 'sequence');

        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_SEQCOL_NAME), 'sequence');
    }
    public function testValidatorAttributeAcceptsBooleans() {
        $this->manager->setAttribute(Doctrine::ATTR_VLD, true);
        
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_VLD), true);
    }
    public function testAutoLengthValidationAttributeAcceptsBooleans() {
        $this->manager->setAttribute(Doctrine::ATTR_AUTO_LENGTH_VLD, true);
        
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_AUTO_LENGTH_VLD), true);
    }
    public function testAutoTypeValidationAttributeAcceptsBooleans() {
        $this->manager->setAttribute(Doctrine::ATTR_AUTO_TYPE_VLD, true);
        
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_AUTO_TYPE_VLD), true);
    }
    public function testDefaultPortabilityAttributeValueIsAll() {
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_PORTABILITY), Doctrine::PORTABILITY_ALL);
    }
    public function testPortabilityAttributeAcceptsPortabilityConstants() {
        $this->manager->setAttribute(Doctrine::ATTR_PORTABILITY, Doctrine::PORTABILITY_RTRIM | Doctrine::PORTABILITY_FIX_CASE);

        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_PORTABILITY), 
                           Doctrine::PORTABILITY_RTRIM | Doctrine::PORTABILITY_FIX_CASE);
    }
    public function testDefaultListenerIsDoctrineEventListener() {
        $this->assertTrue($this->manager->getAttribute(Doctrine::ATTR_LISTENER) instanceof Doctrine_EventListener);                                                                 	
    }
    public function testListenerAttributeAcceptsEventListenerObjects() {
        $this->manager->setAttribute(Doctrine::ATTR_LISTENER, new Doctrine_EventListener_Debugger());

        $this->assertTrue($this->manager->getAttribute(Doctrine::ATTR_LISTENER) instanceof Doctrine_EventListener_Debugger);
    }
    public function testCollectionKeyAttributeAcceptsValidColumnName() {
        try {
            $this->connection->getTable('User')->setAttribute(Doctrine::ATTR_COLL_KEY, 'name');
            
            $this->pass();
        } catch(Exception $e) {
            $this->fail();
        }
    }
    public function testSettingInvalidColumnNameToCollectionKeyAttributeThrowsException() {
        try {
            $this->connection->getTable('User')->setAttribute(Doctrine::ATTR_COLL_KEY, 'unknown');
            
            $this->fail();
        } catch(Exception $e) {
            $this->pass();
        }
    }
    public function testSettingCollectionKeyAttributeOnOtherThanTableLevelThrowsException() {
        try {
            $this->connection->setAttribute(Doctrine::ATTR_COLL_KEY, 'name');
            
            $this->fail();
        } catch(Exception $e) {
            $this->pass();
        }
    }
doctrine's avatar
doctrine committed
157
    public function testSetAttribute() {
zYne's avatar
zYne committed
158
        $table = $this->connection->getTable("User");
159
        /**
doctrine's avatar
doctrine committed
160 161
        $this->manager->setAttribute(Doctrine::ATTR_CACHE_TTL,100);
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_CACHE_TTL),100);
162

doctrine's avatar
doctrine committed
163 164 165 166 167
        $this->manager->setAttribute(Doctrine::ATTR_CACHE_SIZE,1);
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_CACHE_SIZE),1);

        $this->manager->setAttribute(Doctrine::ATTR_CACHE_DIR,"%ROOT%".DIRECTORY_SEPARATOR."cache");
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_CACHE_DIR),$this->manager->getRoot().DIRECTORY_SEPARATOR."cache");
168
        */
doctrine's avatar
doctrine committed
169 170 171 172 173 174 175 176 177 178
        $this->manager->setAttribute(Doctrine::ATTR_FETCHMODE,Doctrine::FETCH_LAZY);
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_FETCHMODE),Doctrine::FETCH_LAZY);

        $this->manager->setAttribute(Doctrine::ATTR_BATCH_SIZE, 5);
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_BATCH_SIZE),5);

        $this->manager->setAttribute(Doctrine::ATTR_LOCKMODE, Doctrine::LOCK_PESSIMISTIC);
        $this->assertEqual($this->manager->getAttribute(Doctrine::ATTR_LOCKMODE), Doctrine::LOCK_PESSIMISTIC);

        // test invalid arguments
179
        /**
doctrine's avatar
doctrine committed
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
        try {
            $this->manager->setAttribute(Doctrine::ATTR_CACHE_TTL,-12);
        } catch(Exception $e) {
            $this->assertTrue($e instanceof Exception);
        }
        try {
            $this->manager->setAttribute(Doctrine::ATTR_CACHE_SIZE,-12);
        } catch(Exception $e) {
            $this->assertTrue($e instanceof Exception);
        }
        try {
            $this->manager->setAttribute(Doctrine::ATTR_BATCH_SIZE,-12);
        } catch(Exception $e) {
            $this->assertTrue($e instanceof Exception);
        }
195
        */
doctrine's avatar
doctrine committed
196
        try {
zYne's avatar
zYne committed
197
            $this->connection->beginTransaction();
doctrine's avatar
doctrine committed
198 199 200
            $this->manager->setAttribute(Doctrine::ATTR_LOCKMODE, Doctrine::LOCK_OPTIMISTIC);
        } catch(Exception $e) {
            $this->assertTrue($e instanceof Exception);
zYne's avatar
zYne committed
201
            $this->connection->commit();
doctrine's avatar
doctrine committed
202
        }
doctrine's avatar
doctrine committed
203

doctrine's avatar
doctrine committed
204
        try {
zYne's avatar
zYne committed
205 206
            $this->connection->beginTransaction();
            $this->connection->setAttribute(Doctrine::ATTR_LOCKMODE, Doctrine::LOCK_PESSIMISTIC);
doctrine's avatar
doctrine committed
207 208
        } catch(Exception $e) {
            $this->assertTrue($e instanceof Exception);
zYne's avatar
zYne committed
209
            $this->connection->commit();
doctrine's avatar
doctrine committed
210
        }
zYne's avatar
zYne committed
211

doctrine's avatar
doctrine committed
212 213 214 215 216 217
    }
    public function testGetAttributes() {
        $this->assertTrue(is_array($this->manager->getAttributes()));
    }
}
?>