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

Reply via email to