Addshore has uploaded a new change for review. https://gerrit.wikimedia.org/r/222607
Change subject: Use DM Serializetion in RB for aliases ...................................................................... Use DM Serializetion in RB for aliases Change-Id: I74d6486589e9a73583f1a5c33285085925b6aa17 --- M repo/includes/api/EditEntity.php M repo/includes/api/ResultBuilder.php M repo/includes/api/SetAliases.php M repo/tests/phpunit/includes/api/ResultBuilderTest.php 4 files changed, 72 insertions(+), 12 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/07/222607/3 diff --git a/repo/includes/api/EditEntity.php b/repo/includes/api/EditEntity.php index ca9557a..8ad42da 100644 --- a/repo/includes/api/EditEntity.php +++ b/repo/includes/api/EditEntity.php @@ -542,7 +542,7 @@ $builder->addLabels( $fingerprint->getLabels(), 'entity' ); $builder->addDescriptions( $fingerprint->getDescriptions(), 'entity' ); - $builder->addAliases( $fingerprint->getAliasGroups()->toTextArray(), 'entity' ); + $builder->addAliasGroupList( $fingerprint->getAliasGroups(), 'entity' ); } if ( $entity instanceof Item ) { diff --git a/repo/includes/api/ResultBuilder.php b/repo/includes/api/ResultBuilder.php index 6048652..f2e610a 100644 --- a/repo/includes/api/ResultBuilder.php +++ b/repo/includes/api/ResultBuilder.php @@ -12,6 +12,8 @@ use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Reference; use Wikibase\DataModel\SerializerFactory; +use Wikibase\DataModel\Term\AliasGroup; +use Wikibase\DataModel\Term\AliasGroupList; use Wikibase\DataModel\Term\Term; use Wikibase\DataModel\Term\TermList; use Wikibase\EntityRevision; @@ -450,16 +452,31 @@ } /** - * Get serialized aliases and add them to result + * Get serialized AliasGroup and add it to result * * @since 0.5 * - * @param array $aliases the aliases to set in the result + * @param AliasGroup $aliasGroup the AliasGroup to set in the result * @param array|string $path where the data is located */ - public function addAliases( array $aliases, $path ) { - $aliasSerializer = $this->libSerializerFactory->newAliasSerializer( $this->getOptions() ); - $values = $aliasSerializer->getSerialized( $aliases ); + public function addAliasGroup( AliasGroup $aliasGroup, $path ) { + $this->addAliasGroupList( + new AliasGroupList( array( $aliasGroup ) ), + $path + ); + } + + /** + * Get serialized AliasGroupList and add it to result + * + * @since 0.5 + * + * @param AliasGroupList $aliasGroupList the AliasGroupList to set in the result + * @param array|string $path where the data is located + */ + public function addAliasGroupList( AliasGroupList $aliasGroupList, $path ) { + $serializer = $this->serializerFactory->newAliasGroupListSerializer(); + $values = $serializer->serialize( $aliasGroupList ); $this->setList( $path, 'aliases', $values, 'alias' ); } diff --git a/repo/includes/api/SetAliases.php b/repo/includes/api/SetAliases.php index cf4c811..3b6c481 100644 --- a/repo/includes/api/SetAliases.php +++ b/repo/includes/api/SetAliases.php @@ -107,9 +107,11 @@ $summary->addAutoSummaryArgs( $entity->getAliases( $language ) ); } - $aliases = $entity->getAliases( $language ); - if ( count( $aliases ) ) { - $this->getResultBuilder()->addAliases( array( $language => $aliases ), 'entity' ); + if ( $entity->getFingerprint()->hasAliasGroup( $language ) ) { + $aliasGroup = $entity->getFingerprint()->getAliasGroup( $language ); + if ( !$aliasGroup->isEmpty() ) { + $this->getResultBuilder()->addAliasGroup( $aliasGroup, 'entity' ); + } } return $summary; diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php b/repo/tests/phpunit/includes/api/ResultBuilderTest.php index 79f37ac..7b08e51 100644 --- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php +++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php @@ -17,6 +17,8 @@ use Wikibase\DataModel\Snak\PropertyValueSnak; use Wikibase\DataModel\Snak\SnakList; use Wikibase\DataModel\Statement\Statement; +use Wikibase\DataModel\Term\AliasGroup; +use Wikibase\DataModel\Term\AliasGroupList; use Wikibase\DataModel\Term\Term; use Wikibase\DataModel\Term\TermList; use Wikibase\EntityRevision; @@ -575,9 +577,48 @@ $this->assertEquals( $expected, $data ); } - public function testAddAliases() { + public function testAddAliasGroup() { $result = $this->getDefaultResult(); - $aliases = array( 'en' => array( 'boo', 'hoo' ), 'de' => array( 'ham', 'cheese' ) ); + $aliasGroup = new AliasGroup( 'en', array( 'boo', 'hoo' ) ); + $path = array( 'entities', 'Q1' ); + $expected = array( + 'entities' => array( + 'Q1' => array( + 'aliases' => array( + 'en' => array( + array( + 'language' => 'en', + 'value' => 'boo', + ), + array( + 'language' => 'en', + 'value' => 'hoo', + ), + ), + ), + ), + ), + ); + + $resultBuilder = $this->getResultBuilder( $result ); + $resultBuilder->addAliasGroup( $aliasGroup, $path ); + + $data = $result->getResultData( null, array( + 'BC' => array(), + 'Types' => array(), + 'Strip' => 'all', + ) ); + $this->assertEquals( $expected, $data ); + } + + public function testAddAliasGroupList() { + $result = $this->getDefaultResult(); + $aliasGroupList = new AliasGroupList( + array( + new AliasGroup( 'en', array( 'boo', 'hoo' ) ), + new AliasGroup( 'de', array( 'ham', 'cheese' ) ), + ) + ); $path = array( 'entities', 'Q1' ); $expected = array( 'entities' => array( @@ -609,7 +650,7 @@ ); $resultBuilder = $this->getResultBuilder( $result ); - $resultBuilder->addAliases( $aliases, $path ); + $resultBuilder->addAliasGroupList( $aliasGroupList, $path ); $data = $result->getResultData( null, array( 'BC' => array(), -- To view, visit https://gerrit.wikimedia.org/r/222607 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I74d6486589e9a73583f1a5c33285085925b6aa17 Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits