Adrian Lang has uploaded a new change for review.

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

Change subject: Introduce EntityIdFormatter interface
......................................................................

Introduce EntityIdFormatter interface

Change-Id: I7be2756d6810cce7802147f19d100a27eb51ca35
---
M lib/includes/formatters/EntityIdFormatter.php
A lib/includes/formatters/EntityIdFormatterBase.php
M lib/includes/formatters/EntityIdLabelFormatter.php
M lib/includes/formatters/EntityIdTitleFormatter.php
R lib/tests/phpunit/formatters/EntityIdFormatterBaseTest.php
M lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
M repo/tests/phpunit/includes/ItemDisambiguationTest.php
7 files changed, 74 insertions(+), 41 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/31/180431/1

diff --git a/lib/includes/formatters/EntityIdFormatter.php 
b/lib/includes/formatters/EntityIdFormatter.php
index 3571ee6..a1d21b9 100644
--- a/lib/includes/formatters/EntityIdFormatter.php
+++ b/lib/includes/formatters/EntityIdFormatter.php
@@ -3,50 +3,23 @@
 namespace Wikibase\Lib;
 
 use InvalidArgumentException;
-use ValueFormatters\ValueFormatterBase;
 use Wikibase\DataModel\Entity\EntityId;
-use Wikibase\DataModel\Entity\EntityIdValue;
 
 /**
- * @since 0.4
- *
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  * @author Thiemo Mättig
  */
-class EntityIdFormatter extends ValueFormatterBase {
+interface EntityIdFormatter {
 
        /**
-        * Format an EntityId data value
+        * Format an EntityId
         *
-        * @since 0.4
-        *
-        * @param EntityId|EntityIdValue $value
+        * @param EntityId $value
         *
         * @throws InvalidArgumentException
         * @return string
         */
-       public function format( $value ) {
-               if ( $value instanceof EntityIdValue ) {
-                       $value = $value->getEntityId();
-               }
-
-               if ( !( $value instanceof EntityId ) ) {
-                       throw new InvalidArgumentException( 'Data value type 
mismatch. Expected an EntityId or EntityIdValue.' );
-               }
-
-               return $this->formatEntityId( $value );
-       }
-
-       /**
-        * @since 0.5
-        *
-        * @param EntityId $entityId
-        *
-        * @return string
-        */
-       protected function formatEntityId( EntityId $entityId ) {
-               return $entityId->getSerialization();
-       }
+       public function format( $value );
 
 }
diff --git a/lib/includes/formatters/EntityIdFormatterBase.php 
b/lib/includes/formatters/EntityIdFormatterBase.php
new file mode 100644
index 0000000..254ddc6
--- /dev/null
+++ b/lib/includes/formatters/EntityIdFormatterBase.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace Wikibase\Lib;
+
+use InvalidArgumentException;
+use ValueFormatters\ValueFormatterBase;
+use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Entity\EntityIdValue;
+
+/**
+ * @since 0.4
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ * @author Thiemo Mättig
+ */
+class EntityIdFormatterBase extends ValueFormatterBase implements 
EntityIdFormatter {
+
+       /**
+        * Format an EntityId data value
+        *
+        * @since 0.4
+        *
+        * @param EntityId|EntityIdValue $value
+        *
+        * @throws InvalidArgumentException
+        * @return string
+        */
+       public function format( $value ) {
+               if ( $value instanceof EntityIdValue ) {
+                       $value = $value->getEntityId();
+               }
+
+               if ( !( $value instanceof EntityId ) ) {
+                       throw new InvalidArgumentException( 'Data value type 
mismatch. Expected an EntityId or EntityIdValue.' );
+               }
+
+               return $this->formatEntityId( $value );
+       }
+
+       /**
+        * @since 0.5
+        *
+        * @param EntityId $entityId
+        *
+        * @return string
+        */
+       protected function formatEntityId( EntityId $entityId ) {
+               return $entityId->getSerialization();
+       }
+
+}
diff --git a/lib/includes/formatters/EntityIdLabelFormatter.php 
b/lib/includes/formatters/EntityIdLabelFormatter.php
index 2b9c957..edbd30e 100644
--- a/lib/includes/formatters/EntityIdLabelFormatter.php
+++ b/lib/includes/formatters/EntityIdLabelFormatter.php
@@ -17,7 +17,7 @@
  * @author Katie Filbert < [email protected] >
  * @author Daniel Kinzler
  */
-class EntityIdLabelFormatter extends EntityIdFormatter {
+class EntityIdLabelFormatter extends EntityIdFormatterBase {
 
        /**
         * Whether we should try to find the label of the entity
diff --git a/lib/includes/formatters/EntityIdTitleFormatter.php 
b/lib/includes/formatters/EntityIdTitleFormatter.php
index c18ddd7..f64b10a 100644
--- a/lib/includes/formatters/EntityIdTitleFormatter.php
+++ b/lib/includes/formatters/EntityIdTitleFormatter.php
@@ -14,7 +14,7 @@
  * @licence GNU GPL v2+
  * @author Daniel Kinzler
  */
-class EntityIdTitleFormatter extends EntityIdFormatter {
+class EntityIdTitleFormatter extends EntityIdFormatterBase {
 
        /**
         * @var EntityTitleLookup
diff --git a/lib/tests/phpunit/formatters/EntityIdFormatterTest.php 
b/lib/tests/phpunit/formatters/EntityIdFormatterBaseTest.php
similarity index 86%
rename from lib/tests/phpunit/formatters/EntityIdFormatterTest.php
rename to lib/tests/phpunit/formatters/EntityIdFormatterBaseTest.php
index 26cf604..5495fd1 100644
--- a/lib/tests/phpunit/formatters/EntityIdFormatterTest.php
+++ b/lib/tests/phpunit/formatters/EntityIdFormatterBaseTest.php
@@ -6,10 +6,10 @@
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Entity\PropertyId;
-use Wikibase\Lib\EntityIdFormatter;
+use Wikibase\Lib\EntityIdFormatterBase;
 
 /**
- * @covers Wikibase\Lib\EntityIdFormatter
+ * @covers Wikibase\Lib\EntityIdFormatterBase
  *
  * @group ValueFormatters
  * @group DataValueExtensions
@@ -20,11 +20,11 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < [email protected] >
  */
-class EntityIdFormatterTest extends \PHPUnit_Framework_TestCase {
+class EntityIdFormatterBaseTest extends \PHPUnit_Framework_TestCase {
 
        protected function newEntityIdFormatter() {
                $options = new FormatterOptions();
-               return new EntityIdFormatter( $options );
+               return new EntityIdFormatterBase( $options );
        }
 
        /**
diff --git 
a/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php 
b/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
index bebc3ea..4b88b62 100644
--- a/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
+++ b/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php
@@ -16,7 +16,7 @@
 use Wikibase\DataModel\Entity\EntityIdValue;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\LanguageFallbackChainFactory;
-use Wikibase\Lib\EntityIdFormatter;
+use Wikibase\Lib\EntityIdFormatterBase;
 use Wikibase\Lib\FormatterLabelLookupFactory;
 use Wikibase\Lib\OutputFormatValueFormatterFactory;
 use Wikibase\Lib\SnakFormatter;
@@ -334,7 +334,7 @@
                $builders->setValueFormatterClass(
                        SnakFormatter::FORMAT_PLAIN,
                        'VT:wikibase-entityid',
-                       'Wikibase\Lib\EntityIdFormatter'
+                       'Wikibase\Lib\EntityIdFormatterBase'
                );
                $builders->setValueFormatterClass(
                        SnakFormatter::FORMAT_PLAIN,
@@ -375,7 +375,7 @@
        public function testSetValueFormatterBuilder() {
                $builder = function () {
                        $options = new FormatterOptions();
-                       return new EntityIdFormatter( $options );
+                       return new EntityIdFormatterBase( $options );
                };
 
                $builders = $this->newWikibaseValueFormatterBuilders();
diff --git a/repo/tests/phpunit/includes/ItemDisambiguationTest.php 
b/repo/tests/phpunit/includes/ItemDisambiguationTest.php
index 3cfb8d8..854c5ef 100644
--- a/repo/tests/phpunit/includes/ItemDisambiguationTest.php
+++ b/repo/tests/phpunit/includes/ItemDisambiguationTest.php
@@ -29,10 +29,18 @@
         * @return ItemDisambiguation
         */
        private function newItemDisambiguation( $searchLanguageCode, 
$userLanguageCode ) {
+               $entityIdFormatter = $this->getMock( 
'Wikibase\Lib\EntityIdFormatter' );
+
+               $entityIdFormatter->expects( $this->any() )
+                       ->method( 'format' )
+                       ->will( $this->returnCallback( function( ItemId $itemId 
) {
+                               return $itemId->getSerialization();
+                       } ) );
+
                return new ItemDisambiguation(
                        $searchLanguageCode,
                        $userLanguageCode,
-                       new EntityIdFormatter( new FormatterOptions() )
+                       $entityIdFormatter
                );
        }
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7be2756d6810cce7802147f19d100a27eb51ca35
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Lang <[email protected]>

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

Reply via email to