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
