X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=vendor%2Fdoctrine%2Fdbal%2Ftests%2FDoctrine%2FTests%2FDBAL%2FPlatforms%2FAbstractPlatformTestCase.php;fp=vendor%2Fdoctrine%2Fdbal%2Ftests%2FDoctrine%2FTests%2FDBAL%2FPlatforms%2FAbstractPlatformTestCase.php;h=0e7240e169aa35620bf7c1183df6b3090cd9df83;hb=8b04b2d11798dee4f3e1358e4f43e97a6df851f6;hp=0000000000000000000000000000000000000000;hpb=73568cf05a785a45f94ca3f2351d9e07bf917958;p=zf2.biz%2Fapplication_blanche.git diff --git a/vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Platforms/AbstractPlatformTestCase.php b/vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Platforms/AbstractPlatformTestCase.php new file mode 100644 index 0000000..0e7240e --- /dev/null +++ b/vendor/doctrine/dbal/tests/Doctrine/Tests/DBAL/Platforms/AbstractPlatformTestCase.php @@ -0,0 +1,388 @@ +_platform = $this->createPlatform(); + } + + /** + * @group DDC-1360 + */ + public function testQuoteIdentifier() + { + if ($this->_platform->getName() == "mssql") { + $this->markTestSkipped('Not working this way on mssql.'); + } + + $c = $this->_platform->getIdentifierQuoteCharacter(); + $this->assertEquals($c."test".$c, $this->_platform->quoteIdentifier("test")); + $this->assertEquals($c."test".$c.".".$c."test".$c, $this->_platform->quoteIdentifier("test.test")); + $this->assertEquals(str_repeat($c, 4), $this->_platform->quoteIdentifier($c)); + } + + /** + * @group DDC-1360 + */ + public function testQuoteSingleIdentifier() + { + if ($this->_platform->getName() == "mssql") { + $this->markTestSkipped('Not working this way on mssql.'); + } + + $c = $this->_platform->getIdentifierQuoteCharacter(); + $this->assertEquals($c."test".$c, $this->_platform->quoteSingleIdentifier("test")); + $this->assertEquals($c."test.test".$c, $this->_platform->quoteSingleIdentifier("test.test")); + $this->assertEquals(str_repeat($c, 4), $this->_platform->quoteSingleIdentifier($c)); + } + + public function testGetInvalidtForeignKeyReferentialActionSQL() + { + $this->setExpectedException('InvalidArgumentException'); + $this->_platform->getForeignKeyReferentialActionSQL('unknown'); + } + + public function testGetUnknownDoctrineMappingType() + { + $this->setExpectedException('Doctrine\DBAL\DBALException'); + $this->_platform->getDoctrineTypeMapping('foobar'); + } + + public function testRegisterDoctrineMappingType() + { + $this->_platform->registerDoctrineTypeMapping('foo', 'integer'); + $this->assertEquals('integer', $this->_platform->getDoctrineTypeMapping('foo')); + } + + public function testRegisterUnknownDoctrineMappingType() + { + $this->setExpectedException('Doctrine\DBAL\DBALException'); + $this->_platform->registerDoctrineTypeMapping('foo', 'bar'); + } + + public function testCreateWithNoColumns() + { + $table = new \Doctrine\DBAL\Schema\Table('test'); + + $this->setExpectedException('Doctrine\DBAL\DBALException'); + $sql = $this->_platform->getCreateTableSQL($table); + } + + public function testGeneratesTableCreationSql() + { + $table = new \Doctrine\DBAL\Schema\Table('test'); + $table->addColumn('id', 'integer', array('notnull' => true, 'autoincrement' => true)); + $table->addColumn('test', 'string', array('notnull' => false, 'length' => 255)); + $table->setPrimaryKey(array('id')); + + $sql = $this->_platform->getCreateTableSQL($table); + $this->assertEquals($this->getGenerateTableSql(), $sql[0]); + } + + abstract public function getGenerateTableSql(); + + public function testGenerateTableWithMultiColumnUniqueIndex() + { + $table = new \Doctrine\DBAL\Schema\Table('test'); + $table->addColumn('foo', 'string', array('notnull' => false, 'length' => 255)); + $table->addColumn('bar', 'string', array('notnull' => false, 'length' => 255)); + $table->addUniqueIndex(array("foo", "bar")); + + $sql = $this->_platform->getCreateTableSQL($table); + $this->assertEquals($this->getGenerateTableWithMultiColumnUniqueIndexSql(), $sql); + } + + abstract public function getGenerateTableWithMultiColumnUniqueIndexSql(); + + public function testGeneratesIndexCreationSql() + { + $indexDef = new \Doctrine\DBAL\Schema\Index('my_idx', array('user_name', 'last_login')); + + $this->assertEquals( + $this->getGenerateIndexSql(), + $this->_platform->getCreateIndexSQL($indexDef, 'mytable') + ); + } + + abstract public function getGenerateIndexSql(); + + public function testGeneratesUniqueIndexCreationSql() + { + $indexDef = new \Doctrine\DBAL\Schema\Index('index_name', array('test', 'test2'), true); + + $sql = $this->_platform->getCreateIndexSQL($indexDef, 'test'); + $this->assertEquals($this->getGenerateUniqueIndexSql(), $sql); + } + + abstract public function getGenerateUniqueIndexSql(); + + public function testGeneratesForeignKeyCreationSql() + { + $fk = new \Doctrine\DBAL\Schema\ForeignKeyConstraint(array('fk_name_id'), 'other_table', array('id'), ''); + + $sql = $this->_platform->getCreateForeignKeySQL($fk, 'test'); + $this->assertEquals($sql, $this->getGenerateForeignKeySql()); + } + + abstract public function getGenerateForeignKeySql(); + + public function testGeneratesConstraintCreationSql() + { + $idx = new \Doctrine\DBAL\Schema\Index('constraint_name', array('test'), true, false); + $sql = $this->_platform->getCreateConstraintSQL($idx, 'test'); + $this->assertEquals($this->getGenerateConstraintUniqueIndexSql(), $sql); + + $pk = new \Doctrine\DBAL\Schema\Index('constraint_name', array('test'), true, true); + $sql = $this->_platform->getCreateConstraintSQL($pk, 'test'); + $this->assertEquals($this->getGenerateConstraintPrimaryIndexSql(), $sql); + + $fk = new \Doctrine\DBAL\Schema\ForeignKeyConstraint(array('fk_name'), 'foreign', array('id'), 'constraint_fk'); + $sql = $this->_platform->getCreateConstraintSQL($fk, 'test'); + $this->assertEquals($this->getGenerateConstraintForeignKeySql(), $sql); + } + + protected function getBitAndComparisonExpressionSql($value1, $value2) + { + return '(' . $value1 . ' & ' . $value2 . ')'; + } + + /** + * @group DDC-1213 + */ + public function testGeneratesBitAndComparisonExpressionSql() + { + $sql = $this->_platform->getBitAndComparisonExpression(2, 4); + $this->assertEquals($this->getBitAndComparisonExpressionSql(2, 4), $sql); + } + + protected function getBitOrComparisonExpressionSql($value1, $value2) + { + return '(' . $value1 . ' | ' . $value2 . ')'; + } + + /** + * @group DDC-1213 + */ + public function testGeneratesBitOrComparisonExpressionSql() + { + $sql = $this->_platform->getBitOrComparisonExpression(2, 4); + $this->assertEquals($this->getBitOrComparisonExpressionSql(2, 4), $sql); + } + + public function getGenerateConstraintUniqueIndexSql() + { + return 'ALTER TABLE test ADD CONSTRAINT constraint_name UNIQUE (test)'; + } + + public function getGenerateConstraintPrimaryIndexSql() + { + return 'ALTER TABLE test ADD CONSTRAINT constraint_name PRIMARY KEY (test)'; + } + + public function getGenerateConstraintForeignKeySql() + { + return 'ALTER TABLE test ADD CONSTRAINT constraint_fk FOREIGN KEY (fk_name) REFERENCES foreign (id)'; + } + + abstract public function getGenerateAlterTableSql(); + + public function testGeneratesTableAlterationSql() + { + $expectedSql = $this->getGenerateAlterTableSql(); + + $tableDiff = new \Doctrine\DBAL\Schema\TableDiff('mytable'); + $tableDiff->newName = 'userlist'; + $tableDiff->addedColumns['quota'] = new \Doctrine\DBAL\Schema\Column('quota', \Doctrine\DBAL\Types\Type::getType('integer'), array('notnull' => false)); + $tableDiff->removedColumns['foo'] = new \Doctrine\DBAL\Schema\Column('foo', \Doctrine\DBAL\Types\Type::getType('integer')); + $tableDiff->changedColumns['bar'] = new \Doctrine\DBAL\Schema\ColumnDiff( + 'bar', new \Doctrine\DBAL\Schema\Column( + 'baz', \Doctrine\DBAL\Types\Type::getType('string'), array('default' => 'def') + ), + array('type', 'notnull', 'default') + ); + $tableDiff->changedColumns['bloo'] = new \Doctrine\DBAL\Schema\ColumnDiff( + 'bloo', new \Doctrine\DBAL\Schema\Column( + 'bloo', \Doctrine\DBAL\Types\Type::getType('boolean'), array('default' => false) + ), + array('type', 'notnull', 'default') + ); + + $sql = $this->_platform->getAlterTableSQL($tableDiff); + + $this->assertEquals($expectedSql, $sql); + } + + public function testGetCustomColumnDeclarationSql() + { + $field = array('columnDefinition' => 'MEDIUMINT(6) UNSIGNED'); + $this->assertEquals('foo MEDIUMINT(6) UNSIGNED', $this->_platform->getColumnDeclarationSQL('foo', $field)); + } + + public function testGetCreateTableSqlDispatchEvent() + { + $listenerMock = $this->getMock('GetCreateTableSqlDispatchEvenListener', array('onSchemaCreateTable', 'onSchemaCreateTableColumn')); + $listenerMock + ->expects($this->once()) + ->method('onSchemaCreateTable'); + $listenerMock + ->expects($this->exactly(2)) + ->method('onSchemaCreateTableColumn'); + + $eventManager = new EventManager(); + $eventManager->addEventListener(array(Events::onSchemaCreateTable, Events::onSchemaCreateTableColumn), $listenerMock); + + $this->_platform->setEventManager($eventManager); + + $table = new \Doctrine\DBAL\Schema\Table('test'); + $table->addColumn('foo', 'string', array('notnull' => false, 'length' => 255)); + $table->addColumn('bar', 'string', array('notnull' => false, 'length' => 255)); + + $this->_platform->getCreateTableSQL($table); + } + + public function testGetDropTableSqlDispatchEvent() + { + $listenerMock = $this->getMock('GetDropTableSqlDispatchEventListener', array('onSchemaDropTable')); + $listenerMock + ->expects($this->once()) + ->method('onSchemaDropTable'); + + $eventManager = new EventManager(); + $eventManager->addEventListener(array(Events::onSchemaDropTable), $listenerMock); + + $this->_platform->setEventManager($eventManager); + + $this->_platform->getDropTableSQL('TABLE'); + } + + public function testGetAlterTableSqlDispatchEvent() + { + $events = array( + 'onSchemaAlterTable', + 'onSchemaAlterTableAddColumn', + 'onSchemaAlterTableRemoveColumn', + 'onSchemaAlterTableChangeColumn', + 'onSchemaAlterTableRenameColumn' + ); + + $listenerMock = $this->getMock('GetAlterTableSqlDispatchEvenListener', $events); + $listenerMock + ->expects($this->once()) + ->method('onSchemaAlterTable'); + $listenerMock + ->expects($this->once()) + ->method('onSchemaAlterTableAddColumn'); + $listenerMock + ->expects($this->once()) + ->method('onSchemaAlterTableRemoveColumn'); + $listenerMock + ->expects($this->once()) + ->method('onSchemaAlterTableChangeColumn'); + $listenerMock + ->expects($this->once()) + ->method('onSchemaAlterTableRenameColumn'); + + $eventManager = new EventManager(); + $events = array( + Events::onSchemaAlterTable, + Events::onSchemaAlterTableAddColumn, + Events::onSchemaAlterTableRemoveColumn, + Events::onSchemaAlterTableChangeColumn, + Events::onSchemaAlterTableRenameColumn + ); + $eventManager->addEventListener($events, $listenerMock); + + $this->_platform->setEventManager($eventManager); + + $tableDiff = new \Doctrine\DBAL\Schema\TableDiff('mytable'); + $tableDiff->addedColumns['added'] = new \Doctrine\DBAL\Schema\Column('added', \Doctrine\DBAL\Types\Type::getType('integer'), array()); + $tableDiff->removedColumns['removed'] = new \Doctrine\DBAL\Schema\Column('removed', \Doctrine\DBAL\Types\Type::getType('integer'), array()); + $tableDiff->changedColumns['changed'] = new \Doctrine\DBAL\Schema\ColumnDiff( + 'changed', new \Doctrine\DBAL\Schema\Column( + 'changed2', \Doctrine\DBAL\Types\Type::getType('string'), array() + ), + array() + ); + $tableDiff->renamedColumns['renamed'] = new \Doctrine\DBAL\Schema\Column('renamed2', \Doctrine\DBAL\Types\Type::getType('integer'), array()); + + $this->_platform->getAlterTableSQL($tableDiff); + } + + /** + * @group DBAL-42 + */ + public function testCreateTableColumnComments() + { + $table = new \Doctrine\DBAL\Schema\Table('test'); + $table->addColumn('id', 'integer', array('comment' => 'This is a comment')); + $table->setPrimaryKey(array('id')); + + $this->assertEquals($this->getCreateTableColumnCommentsSQL(), $this->_platform->getCreateTableSQL($table)); + } + + /** + * @group DBAL-42 + */ + public function testAlterTableColumnComments() + { + $tableDiff = new \Doctrine\DBAL\Schema\TableDiff('mytable'); + $tableDiff->addedColumns['quota'] = new \Doctrine\DBAL\Schema\Column('quota', \Doctrine\DBAL\Types\Type::getType('integer'), array('comment' => 'A comment')); + $tableDiff->changedColumns['bar'] = new \Doctrine\DBAL\Schema\ColumnDiff( + 'bar', new \Doctrine\DBAL\Schema\Column( + 'baz', \Doctrine\DBAL\Types\Type::getType('string'), array('comment' => 'B comment') + ), + array('comment') + ); + + $this->assertEquals($this->getAlterTableColumnCommentsSQL(), $this->_platform->getAlterTableSQL($tableDiff)); + } + + public function testCreateTableColumnTypeComments() + { + $table = new \Doctrine\DBAL\Schema\Table('test'); + $table->addColumn('id', 'integer'); + $table->addColumn('data', 'array'); + $table->setPrimaryKey(array('id')); + + $this->assertEquals($this->getCreateTableColumnTypeCommentsSQL(), $this->_platform->getCreateTableSQL($table)); + } + + public function getCreateTableColumnCommentsSQL() + { + $this->markTestSkipped('Platform does not support Column comments.'); + } + + public function getAlterTableColumnCommentsSQL() + { + $this->markTestSkipped('Platform does not support Column comments.'); + } + + public function getCreateTableColumnTypeCommentsSQL() + { + $this->markTestSkipped('Platform does not support Column comments.'); + } + + /** + * @group DBAL-45 + */ + public function testKeywordList() + { + $keywordList = $this->_platform->getReservedKeywordsList(); + $this->assertInstanceOf('Doctrine\DBAL\Platforms\Keywords\KeywordList', $keywordList); + + $this->assertTrue($keywordList->isKeyword('table')); + } +}