Jeroen De Dauw has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/87555


Change subject: Add FieldRemovalFailedException and FieldAdditionFailedException
......................................................................

Add FieldRemovalFailedException and FieldAdditionFailedException

Also fixes incorrect subclassing of QueryInterfaceException for exceptions
no longer related to this interface.

Change-Id: I25180498c5915cb8c51227f90151379622723b4b
---
A src/Schema/FieldAdditionFailedException.php
A src/Schema/FieldRemovalFailedException.php
A src/Schema/SchemaModificationException.php
M src/Schema/SchemaModifier.php
M src/Schema/SimpleTableSchemaUpdater.php
M src/Schema/TableCreationFailedException.php
M src/Schema/TableDeletionFailedException.php
R src/Schema/TableSchemaUpdateException.php
M src/Schema/TableSchemaUpdater.php
A tests/phpunit/Schema/FieldAdditionFailedExceptionTest.php
A tests/phpunit/Schema/FieldRemovalFailedExceptionTest.php
R tests/phpunit/Schema/TableSchemaUpdateExceptionTest.php
12 files changed, 174 insertions(+), 12 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/WikibaseDatabase 
refs/changes/55/87555/1

diff --git a/src/Schema/FieldAdditionFailedException.php 
b/src/Schema/FieldAdditionFailedException.php
new file mode 100644
index 0000000..1969b4c
--- /dev/null
+++ b/src/Schema/FieldAdditionFailedException.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Wikibase\Database\Schema;
+
+use Wikibase\Database\Schema\Definitions\FieldDefinition;
+
+/**
+ * @since 0.1
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class FieldAdditionFailedException extends SchemaModificationException {
+
+       protected $tableName;
+       protected $field;
+
+       public function __construct( $tableName, FieldDefinition $field, 
$message = '', \Exception $previous = null ) {
+               parent::__construct( $message, 0, $previous );
+
+               $this->tableName = $tableName;
+               $this->field = $field;
+       }
+
+       public function getTableName() {
+               return $this->tableName;
+       }
+
+       public function getField() {
+               return $this->field;
+       }
+
+}
\ No newline at end of file
diff --git a/src/Schema/FieldRemovalFailedException.php 
b/src/Schema/FieldRemovalFailedException.php
new file mode 100644
index 0000000..e141609
--- /dev/null
+++ b/src/Schema/FieldRemovalFailedException.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Wikibase\Database\Schema;
+
+/**
+ * @since 0.1
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class FieldRemovalFailedException extends SchemaModificationException {
+
+       protected $tableName;
+       protected $fieldName;
+
+       public function __construct( $tableName, $fieldName, $message = '', 
\Exception $previous = null ) {
+               parent::__construct( $message, 0, $previous );
+
+               $this->tableName = $tableName;
+               $this->fieldName = $fieldName;
+       }
+
+       public function getTableName() {
+               return $this->tableName;
+       }
+
+       public function getFieldName() {
+               return $this->fieldName;
+       }
+
+}
\ No newline at end of file
diff --git a/src/Schema/SchemaModificationException.php 
b/src/Schema/SchemaModificationException.php
new file mode 100644
index 0000000..04ee1f0
--- /dev/null
+++ b/src/Schema/SchemaModificationException.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Wikibase\Database\Schema;
+
+/**
+ * @since 0.1
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class SchemaModificationException extends \Exception {
+
+}
\ No newline at end of file
diff --git a/src/Schema/SchemaModifier.php b/src/Schema/SchemaModifier.php
index d2d3385..53fa89c 100644
--- a/src/Schema/SchemaModifier.php
+++ b/src/Schema/SchemaModifier.php
@@ -15,7 +15,7 @@
         * @param string $tableName
         * @param string $fieldName
         *
-        * TODO: document throws
+        * @throws FieldRemovalFailedException
         */
        public function removeField( $tableName, $fieldName );
 
@@ -23,7 +23,7 @@
         * @param string $tableName
         * @param FieldDefinition $field
         *
-        * TODO: document throws
+        * @throws FieldAdditionFailedException
         */
        public function addField( $tableName, FieldDefinition $field );
 
diff --git a/src/Schema/SimpleTableSchemaUpdater.php 
b/src/Schema/SimpleTableSchemaUpdater.php
index 041bf35..8e28df6 100644
--- a/src/Schema/SimpleTableSchemaUpdater.php
+++ b/src/Schema/SimpleTableSchemaUpdater.php
@@ -24,7 +24,7 @@
         * @param TableDefinition $currentTable
         * @param TableDefinition $newTable
         *
-        * @throws SchemaUpdateFailedException
+        * @throws TableSchemaUpdateException
         */
        public function updateTable( TableDefinition $currentTable, 
TableDefinition $newTable ) {
                // TODO: assert same table
diff --git a/src/Schema/TableCreationFailedException.php 
b/src/Schema/TableCreationFailedException.php
index c83235d..0e9e0ce 100644
--- a/src/Schema/TableCreationFailedException.php
+++ b/src/Schema/TableCreationFailedException.php
@@ -10,7 +10,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-class TableCreationFailedException extends QueryInterfaceException {
+class TableCreationFailedException extends SchemaModificationException {
 
        protected $table;
 
diff --git a/src/Schema/TableDeletionFailedException.php 
b/src/Schema/TableDeletionFailedException.php
index 413a733..508f7e6 100644
--- a/src/Schema/TableDeletionFailedException.php
+++ b/src/Schema/TableDeletionFailedException.php
@@ -10,7 +10,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-class TableDeletionFailedException extends QueryInterfaceException {
+class TableDeletionFailedException extends SchemaModificationException {
 
        protected $tableName;
 
diff --git a/src/Schema/SchemaUpdateFailedException.php 
b/src/Schema/TableSchemaUpdateException.php
similarity index 84%
rename from src/Schema/SchemaUpdateFailedException.php
rename to src/Schema/TableSchemaUpdateException.php
index cf441e9..a949a07 100644
--- a/src/Schema/SchemaUpdateFailedException.php
+++ b/src/Schema/TableSchemaUpdateException.php
@@ -7,7 +7,7 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-class SchemaUpdateFailedException extends \Exception {
+class TableSchemaUpdateException extends \Exception {
 
        public function __construct( $message = '', \Exception $previous = null 
) {
                parent::__construct( $message, 0, $previous );
diff --git a/src/Schema/TableSchemaUpdater.php 
b/src/Schema/TableSchemaUpdater.php
index 2f441b6..63a4f32 100644
--- a/src/Schema/TableSchemaUpdater.php
+++ b/src/Schema/TableSchemaUpdater.php
@@ -17,7 +17,7 @@
         * @param TableDefinition $currentTable
         * @param TableDefinition $newTable
         *
-        * @throws SchemaUpdateFailedException
+        * @throws TableSchemaUpdateException
         */
        public function updateTable( TableDefinition $currentTable, 
TableDefinition $newTable );
 
diff --git a/tests/phpunit/Schema/FieldAdditionFailedExceptionTest.php 
b/tests/phpunit/Schema/FieldAdditionFailedExceptionTest.php
new file mode 100644
index 0000000..5b24330
--- /dev/null
+++ b/tests/phpunit/Schema/FieldAdditionFailedExceptionTest.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Wikibase\Database\Tests\Schema;
+
+use Wikibase\Database\Schema\FieldAdditionFailedException;
+
+/**
+ * @covers Wikibase\Database\Schema\FieldAdditionFailedException
+ *
+ * @group Wikibase
+ * @group WikibaseDatabase
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class FieldAdditionFailedExceptionTest extends \PHPUnit_Framework_TestCase {
+
+       public function testConstructorWithJustATable() {
+               $tableName = 'users';
+               $field = $this->getMockBuilder( 
'Wikibase\Database\Schema\Definitions\FieldDefinition' )
+                       ->disableOriginalConstructor()->getMock();
+
+               $exception = new FieldAdditionFailedException( $tableName, 
$field );
+
+               $this->assertEquals( $tableName, $exception->getTableName() );
+               $this->assertEquals( $field, $exception->getField() );
+       }
+
+       public function testConstructorWithAllArguments() {
+               $tableName = 'users';
+               $field = $this->getMockBuilder( 
'Wikibase\Database\Schema\Definitions\FieldDefinition' )
+                       ->disableOriginalConstructor()->getMock();
+
+               $message = 'NyanData all the way accross the sky!';
+               $previous = new \Exception( 'Onoez!' );
+
+               $exception = new FieldAdditionFailedException( $tableName, 
$field, $message, $previous );
+
+               $this->assertEquals( $tableName, $exception->getTableName() );
+               $this->assertEquals( $field, $exception->getField() );
+               $this->assertEquals( $message, $exception->getMessage() );
+               $this->assertEquals( $previous, $exception->getPrevious() );
+       }
+
+}
diff --git a/tests/phpunit/Schema/FieldRemovalFailedExceptionTest.php 
b/tests/phpunit/Schema/FieldRemovalFailedExceptionTest.php
new file mode 100644
index 0000000..09f35b6
--- /dev/null
+++ b/tests/phpunit/Schema/FieldRemovalFailedExceptionTest.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Wikibase\Database\Tests\Schema;
+
+use Wikibase\Database\Schema\FieldRemovalFailedException;
+
+/**
+ * @covers Wikibase\Database\Schema\FieldRemovalFailedException
+ *
+ * @group Wikibase
+ * @group WikibaseDatabase
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ */
+class FieldRemovalFailedExceptionTest extends \PHPUnit_Framework_TestCase {
+
+       public function testConstructorWithJustATable() {
+               $tableName = 'users';
+               $fieldName = 'btc';
+
+               $exception = new FieldRemovalFailedException( $tableName, 
$fieldName );
+
+               $this->assertEquals( $tableName, $exception->getTableName() );
+               $this->assertEquals( $fieldName, $exception->getFieldName() );
+       }
+
+       public function testConstructorWithAllArguments() {
+               $tableName = 'users';
+               $fieldName = 'btc';
+
+               $message = 'NyanData all the way accross the sky!';
+               $previous = new \Exception( 'Onoez!' );
+
+               $exception = new FieldRemovalFailedException( $tableName, 
$fieldName, $message, $previous );
+
+               $this->assertEquals( $tableName, $exception->getTableName() );
+               $this->assertEquals( $fieldName, $exception->getFieldName() );
+               $this->assertEquals( $message, $exception->getMessage() );
+               $this->assertEquals( $previous, $exception->getPrevious() );
+       }
+
+}
diff --git a/tests/phpunit/Schema/SchemaUpdateFailedExceptionTest.php 
b/tests/phpunit/Schema/TableSchemaUpdateExceptionTest.php
similarity index 64%
rename from tests/phpunit/Schema/SchemaUpdateFailedExceptionTest.php
rename to tests/phpunit/Schema/TableSchemaUpdateExceptionTest.php
index b443a9a..f2c87a7 100644
--- a/tests/phpunit/Schema/SchemaUpdateFailedExceptionTest.php
+++ b/tests/phpunit/Schema/TableSchemaUpdateExceptionTest.php
@@ -2,10 +2,10 @@
 
 namespace Wikibase\Database\Tests\Schema;
 
-use Wikibase\Database\Schema\SchemaUpdateFailedException;
+use Wikibase\Database\Schema\TableSchemaUpdateException;
 
 /**
- * @covers Wikibase\Database\Schema\SchemaUpdateFailedException
+ * @covers Wikibase\Database\Schema\TableSchemaUpdateException
  *
  * @group Wikibase
  * @group WikibaseDatabase
@@ -13,10 +13,10 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-class SchemaUpdateFailedExceptionTest extends \PHPUnit_Framework_TestCase {
+class TableSchemaUpdateExceptionTest extends \PHPUnit_Framework_TestCase {
 
        public function testConstructorWithOnlyRequiredArguments() {
-               $exception = new SchemaUpdateFailedException();
+               new TableSchemaUpdateException();
                $this->assertTrue( true );
        }
 
@@ -24,7 +24,7 @@
                $message = 'NyanData all the way accross the sky!';
                $previous = new \Exception( 'Onoez!' );
 
-               $exception = new SchemaUpdateFailedException( $message, 
$previous );
+               $exception = new TableSchemaUpdateException( $message, 
$previous );
 
                $this->assertEquals( $message, $exception->getMessage() );
                $this->assertEquals( $previous, $exception->getPrevious() );

-- 
To view, visit https://gerrit.wikimedia.org/r/87555
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I25180498c5915cb8c51227f90151379622723b4b
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/WikibaseDatabase
Gerrit-Branch: master
Gerrit-Owner: Jeroen De Dauw <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to