Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/89701
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(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseDatabase
refs/changes/01/89701/1
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: newchange
Gerrit-Change-Id: I8dbb9264aeefa2a6ea86827e21ac54780319e0bd
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseDatabase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits