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

Reply via email to