Jeroen De Dauw has submitted this change and it was merged. Change subject: Add IntegrationTest for PrimaryKeys & UniqueIndexs ......................................................................
Add IntegrationTest for PrimaryKeys & UniqueIndexs Also contains fixes to make PrimaryKeys work perfectly.. Change-Id: I8dbb9264aeefa2a6ea86827e21ac54780319e0bd --- M src/MediaWiki/MWTableBuilderBuilder.php M src/SQLite/SQLiteSchemaSqlBuilder.php M src/SQLite/SQLiteTableSqlBuilder.php M tests/integration/MediaWiki/Schema/TableCreateReadDeleteTest.php M tests/phpunit/SQLite/SQLiteTableSqlBuilderTest.php 5 files changed, 20 insertions(+), 8 deletions(-) Approvals: Jeroen De Dauw: Looks good to me, approved diff --git a/src/MediaWiki/MWTableBuilderBuilder.php b/src/MediaWiki/MWTableBuilderBuilder.php index ec7e160..a357131 100644 --- a/src/MediaWiki/MWTableBuilderBuilder.php +++ b/src/MediaWiki/MWTableBuilderBuilder.php @@ -75,6 +75,7 @@ protected function newSQLiteTableSqlBuilder() { return new SQLiteTableSqlBuilder( + $this->newEscaper(), $this->newTableNameFormatter(), new SQLiteFieldSqlBuilder( $this->newEscaper() ), new SQLiteIndexSqlBuilder( $this->newEscaper(), $this->newTableNameFormatter() ) diff --git a/src/SQLite/SQLiteSchemaSqlBuilder.php b/src/SQLite/SQLiteSchemaSqlBuilder.php index 51ca72c..e12966e 100644 --- a/src/SQLite/SQLiteSchemaSqlBuilder.php +++ b/src/SQLite/SQLiteSchemaSqlBuilder.php @@ -32,6 +32,7 @@ $this->tableDefinitionReader = $definitionReader; //todo inject SQLiteTableSqlBuilder to make testing easier? $this->tableSqlBuilder = new SQLiteTableSqlBuilder( + $escaper, $tableNameFormatter, new SQLiteFieldSqlBuilder( $escaper ), new SQLiteIndexSqlBuilder( $escaper, $tableNameFormatter ) diff --git a/src/SQLite/SQLiteTableSqlBuilder.php b/src/SQLite/SQLiteTableSqlBuilder.php index c089243..d7f114c 100644 --- a/src/SQLite/SQLiteTableSqlBuilder.php +++ b/src/SQLite/SQLiteTableSqlBuilder.php @@ -2,6 +2,7 @@ namespace Wikibase\Database\SQLite; +use Wikibase\Database\Escaper; use Wikibase\Database\Schema\Definitions\FieldDefinition; use Wikibase\Database\Schema\Definitions\IndexDefinition; use Wikibase\Database\Schema\Definitions\TableDefinition; @@ -18,16 +19,19 @@ */ class SQLiteTableSqlBuilder extends TableSqlBuilder { + protected $escaper; protected $tableNameFormatter; protected $fieldSqlBuilder; protected $indexSqlBuilder; /** + * @param Escaper $escaper * @param TableNameFormatter $tableNameFormatter * @param SQLiteFieldSqlBuilder $fieldBuilder * @param SQLiteIndexSqlBuilder $indexBuilder */ - public function __construct( TableNameFormatter $tableNameFormatter, SQLiteFieldSqlBuilder $fieldBuilder, SQLiteIndexSqlBuilder $indexBuilder ) { + public function __construct( Escaper $escaper, TableNameFormatter $tableNameFormatter, SQLiteFieldSqlBuilder $fieldBuilder, SQLiteIndexSqlBuilder $indexBuilder ) { + $this->escaper = $escaper; $this->tableNameFormatter = $tableNameFormatter; $this->fieldSqlBuilder = $fieldBuilder; $this->indexSqlBuilder = $indexBuilder; @@ -93,7 +97,7 @@ $cols = array(); foreach( $index->getColumns() as $col => $length ){ - $cols[] = $col; + $cols[] = $this->escaper->getEscapedIdentifier( $col ); } return ',PRIMARY KEY (' . implode( ', ', $cols ) . ')'; diff --git a/tests/integration/MediaWiki/Schema/TableCreateReadDeleteTest.php b/tests/integration/MediaWiki/Schema/TableCreateReadDeleteTest.php index 88693d0..122fc84 100644 --- a/tests/integration/MediaWiki/Schema/TableCreateReadDeleteTest.php +++ b/tests/integration/MediaWiki/Schema/TableCreateReadDeleteTest.php @@ -106,14 +106,14 @@ $tables[] = new TableDefinition( 'default_field_values_and_indexes', array( new FieldDefinition( 'textfield', FieldDefinition::TYPE_TEXT, FieldDefinition::NOT_NULL ), - new FieldDefinition( 'intfield', FieldDefinition::TYPE_INTEGER, FieldDefinition::NULL, 3 ), - new FieldDefinition( 'floatfield', FieldDefinition::TYPE_FLOAT, FieldDefinition::NOT_NULL ), + new FieldDefinition( 'intfield', FieldDefinition::TYPE_INTEGER, FieldDefinition::NOT_NULL, 3 ), + new FieldDefinition( 'floatfield', FieldDefinition::TYPE_FLOAT, FieldDefinition::NULL ), new FieldDefinition( 'boolfield', FieldDefinition::TYPE_BOOLEAN, FieldDefinition::NOT_NULL, true ), ), array( - //TODO test PRIMARY key - //TODO test UNIQUE INDEX - new IndexDefinition( 'somename', array( 'intfield' => 0, 'floatfield' => 0 ) ) + new IndexDefinition( 'PRIMARY', array( 'intfield' => 0 ), IndexDefinition::TYPE_PRIMARY ), + new IndexDefinition( 'uniqueIndexName', array( 'floatfield' => 0 ), IndexDefinition::TYPE_UNIQUE ), + new IndexDefinition( 'somename', array( 'intfield' => 0, 'floatfield' => 0 ) ), ) ); diff --git a/tests/phpunit/SQLite/SQLiteTableSqlBuilderTest.php b/tests/phpunit/SQLite/SQLiteTableSqlBuilderTest.php index 4e6034a..fbf4ddb 100644 --- a/tests/phpunit/SQLite/SQLiteTableSqlBuilderTest.php +++ b/tests/phpunit/SQLite/SQLiteTableSqlBuilderTest.php @@ -27,7 +27,12 @@ } protected function newInstance() { - + $mockEscaper = $this->getMock( 'Wikibase\Database\Escaper' ); + $mockEscaper->expects( $this->any() ) + ->method( 'getEscapedIdentifier' ) + ->will( $this->returnCallback( function( $value ) { + return '-' . $value . '-'; + } ) ); $mockTableNameFormatter = $this->getMock( 'Wikibase\Database\TableNameFormatter' ); $mockTableNameFormatter->expects( $this->any() ) @@ -49,6 +54,7 @@ ->will( $this->returnValue( '<INDEXSQL>' ) ); return new SQLiteTableSqlBuilder( + $mockEscaper, $mockTableNameFormatter, $mockFieldSqlBuilder, $mockIndexSqlBuilder -- To view, visit https://gerrit.wikimedia.org/r/89701 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I8dbb9264aeefa2a6ea86827e21ac54780319e0bd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/WikibaseDatabase Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits