jenkins-bot has submitted this change and it was merged. Change subject: Introduce EntityIdFormatter interface ......................................................................
Introduce EntityIdFormatter interface Change-Id: I7be2756d6810cce7802147f19d100a27eb51ca35 --- M lib/includes/formatters/EntityIdFormatter.php M lib/includes/formatters/EntityIdLabelFormatter.php M lib/includes/formatters/EntityIdTitleFormatter.php A lib/includes/formatters/PlainEntityIdFormatter.php R lib/tests/phpunit/formatters/PlainEntityIdFormatterTest.php M lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php M repo/tests/phpunit/includes/ItemDisambiguationTest.php 7 files changed, 74 insertions(+), 41 deletions(-) Approvals: Daniel Kinzler: Looks good to me, approved jenkins-bot: Verified 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/EntityIdLabelFormatter.php b/lib/includes/formatters/EntityIdLabelFormatter.php index 2b9c957..713c504 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 PlainEntityIdFormatter { /** * 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..f45633f 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 PlainEntityIdFormatter { /** * @var EntityTitleLookup diff --git a/lib/includes/formatters/PlainEntityIdFormatter.php b/lib/includes/formatters/PlainEntityIdFormatter.php new file mode 100644 index 0000000..612e779 --- /dev/null +++ b/lib/includes/formatters/PlainEntityIdFormatter.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 PlainEntityIdFormatter 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/tests/phpunit/formatters/EntityIdFormatterTest.php b/lib/tests/phpunit/formatters/PlainEntityIdFormatterTest.php similarity index 86% rename from lib/tests/phpunit/formatters/EntityIdFormatterTest.php rename to lib/tests/phpunit/formatters/PlainEntityIdFormatterTest.php index 26cf604..bf272f7 100644 --- a/lib/tests/phpunit/formatters/EntityIdFormatterTest.php +++ b/lib/tests/phpunit/formatters/PlainEntityIdFormatterTest.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\PlainEntityIdFormatter; /** - * @covers Wikibase\Lib\EntityIdFormatter + * @covers Wikibase\Lib\PlainEntityIdFormatter * * @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 PlainEntityIdFormatterTest extends \PHPUnit_Framework_TestCase { protected function newEntityIdFormatter() { $options = new FormatterOptions(); - return new EntityIdFormatter( $options ); + return new PlainEntityIdFormatter( $options ); } /** diff --git a/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php b/lib/tests/phpunit/formatters/WikibaseValueFormatterBuildersTest.php index bebc3ea..1fb7df3 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\PlainEntityIdFormatter; 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\PlainEntityIdFormatter' ); $builders->setValueFormatterClass( SnakFormatter::FORMAT_PLAIN, @@ -375,7 +375,7 @@ public function testSetValueFormatterBuilder() { $builder = function () { $options = new FormatterOptions(); - return new EntityIdFormatter( $options ); + return new PlainEntityIdFormatter( $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: merged Gerrit-Change-Id: I7be2756d6810cce7802147f19d100a27eb51ca35 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Adrian Lang <[email protected]> Gerrit-Reviewer: Adrian Lang <[email protected]> Gerrit-Reviewer: Aude <[email protected]> Gerrit-Reviewer: Daniel Kinzler <[email protected]> Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
