Aude has uploaded a new change for review. https://gerrit.wikimedia.org/r/65794
Change subject: (bug 48864) json decode value for addQualifier in SetQualifier api module ...................................................................... (bug 48864) json decode value for addQualifier in SetQualifier api module Before this patch, SetQualifier accepted a non-json encoded string for $params['value'] and failed to handle any json-encoded values like wikibase-item and time data types. This makes the module work for adding qualifiers with all data types, and makes it consistent with the CreateClaim module. Also updated the test to test for additional data value type. Change-Id: I6c5f02aec5d87b413f896412d1b8f26dcbb3e895 --- M repo/includes/api/SetQualifier.php M repo/tests/phpunit/includes/api/SetQualifierTest.php 2 files changed, 21 insertions(+), 13 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/94/65794/1 diff --git a/repo/includes/api/SetQualifier.php b/repo/includes/api/SetQualifier.php index 32a6970..301eecd 100644 --- a/repo/includes/api/SetQualifier.php +++ b/repo/includes/api/SetQualifier.php @@ -258,7 +258,7 @@ $newQualifier = $factory->newSnak( $propertyId, $params['snaktype'], - isset( $params['value'] ) ? $params['value'] : null + isset( $params['value'] ) ? \FormatJson::decode( $params['value'], true ) : null ); return $qualifiers->addSnak( $newQualifier ); diff --git a/repo/tests/phpunit/includes/api/SetQualifierTest.php b/repo/tests/phpunit/includes/api/SetQualifierTest.php index 012e620..cf4a9ab 100644 --- a/repo/tests/phpunit/includes/api/SetQualifierTest.php +++ b/repo/tests/phpunit/includes/api/SetQualifierTest.php @@ -6,7 +6,7 @@ use Wikibase\Statement; use Wikibase\Claim; use Wikibase\EntityId; -//use Wikibase\Test\ModifyItemBase; +use Wikibase\Property; /** * Unit tests for the Wikibase\Repo\Api\SetQualifier class. @@ -101,22 +101,33 @@ * @return Snak[] */ protected function newQualifierProvider() { - $property = \Wikibase\Property::newFromType( 'commonsMedia' ); - $content = new \Wikibase\PropertyContent( $property ); - $status = $content->save( '', null, EDIT_NEW ); + $properties = array(); - $this->assertTrue( $status->isOK() ); + $property1 = \Wikibase\Property::newFromType( 'commonsMedia' ); + $properties[] = $property1; + + $property2 = \Wikibase\Property::newFromType( 'wikibase-item' ); + $properties[] = $property2; + + foreach( $properties as $property ) { + $content = new \Wikibase\PropertyContent( $property ); + $status = $content->save( '', null, EDIT_NEW ); + + $this->assertTrue( $status->isOK() ); + } return array( new \Wikibase\PropertySomeValueSnak( 1 ), new \Wikibase\PropertyNoValueSnak( 1 ), - new \Wikibase\PropertyValueSnak( $property->getId(), new \DataValues\StringValue( 'new qualifier' ) ), + new \Wikibase\PropertyValueSnak( $property1->getId(), new \DataValues\StringValue( 'new qualifier' ) ), + new \Wikibase\PropertyValueSnak( $property2->getId(), new EntityId( Item::ENTITY_TYPE, 802 ) ), ); } public function testRequests() { - foreach ( $this->claimProvider() as $claim ) { + foreach( $this->claimProvider() as $claim ) { $item = \Wikibase\Item::newEmpty(); + $item->setId( new EntityId( Item::ENTITY_TYPE, 802 ) ); $content = new \Wikibase\ItemContent( $item ); $content->save( '', null, EDIT_NEW ); @@ -145,11 +156,8 @@ ); if ( $qualifier instanceof \Wikibase\PropertyValueSnak ) { - $params['value'] = $qualifier->getDataValue()->getArrayValue(); - - if ( is_array( $params['value'] ) ) { - $params['value'] = \FormatJson::encode( $params['value'] ); - } + $dataValue = $qualifier->getDataValue(); + $params['value'] = \FormatJson::encode( $dataValue->getArrayValue() ); } $this->makeValidRequest( $params ); -- To view, visit https://gerrit.wikimedia.org/r/65794 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6c5f02aec5d87b413f896412d1b8f26dcbb3e895 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Aude <aude.w...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits