jenkins-bot has submitted this change and it was merged.

Change subject: Inject EntityTitleLookup to ResultBuilder
......................................................................


Inject EntityTitleLookup to ResultBuilder

Change-Id: I874557b7eac1a62ec9c77859bc59856c825d80c3
---
M repo/includes/api/ApiWikibase.php
M repo/includes/api/ResultBuilder.php
M repo/tests/phpunit/includes/api/ResultBuilderTest.php
3 files changed, 43 insertions(+), 10 deletions(-)

Approvals:
  Aude: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/includes/api/ApiWikibase.php 
b/repo/includes/api/ApiWikibase.php
index 2deb90f..8bd9f63 100644
--- a/repo/includes/api/ApiWikibase.php
+++ b/repo/includes/api/ApiWikibase.php
@@ -48,7 +48,8 @@
         */
        public function getResultBuilder() {
                if( !isset( $this->resultBuilder ) ) {
-                       $this->resultBuilder = new ResultBuilder( 
$this->getResult() );
+                       $entityTitleLookup = 
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup();
+                       $this->resultBuilder = new ResultBuilder( 
$this->getResult(), $entityTitleLookup );
                }
                return $this->resultBuilder;
        }
diff --git a/repo/includes/api/ResultBuilder.php 
b/repo/includes/api/ResultBuilder.php
index e2d1f3e..47d78eb 100644
--- a/repo/includes/api/ResultBuilder.php
+++ b/repo/includes/api/ResultBuilder.php
@@ -10,11 +10,11 @@
 use Wikibase\Claims;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\EntityRevision;
+use Wikibase\EntityTitleLookup;
 use Wikibase\Lib\Serializers\EntitySerializer;
 use Wikibase\Lib\Serializers\SerializationOptions;
 use Wikibase\Lib\Serializers\SerializerFactory;
 use Wikibase\Reference;
-use Wikibase\Repo\WikibaseRepo;
 
 /**
  * Builder for Api Results
@@ -40,15 +40,24 @@
         * @var SerializerFactory
         */
        protected $serializerFactory;
+       /**
+        * @var EntityTitleLookup
+        */
+       private $entityTitleLookup;
 
        /**
         * @param ApiResult $result
+        * @param EntityTitleLookup $entityTitleLookup
         * @param SerializerFactory $serializerFactory
         *
         * @throws InvalidArgumentException
         * @todo require SerializerFactory
         */
-       public function __construct( $result, SerializerFactory 
$serializerFactory = null ) {
+       public function __construct(
+               $result,
+               EntityTitleLookup $entityTitleLookup,
+               SerializerFactory $serializerFactory = null
+       ) {
                if( !$result instanceof ApiResult ){
                        throw new InvalidArgumentException( 'Result builder 
must be constructed with an ApiWikibase' );
                }
@@ -57,8 +66,9 @@
                        $serializerFactory = new SerializerFactory();
                }
 
-               $this->serializerFactory = $serializerFactory;
                $this->result = $result;
+               $this->entityTitleLookup = $entityTitleLookup;
+               $this->serializerFactory = $serializerFactory;
                $this->missingEntityCounter = -1;
        }
 
@@ -118,7 +128,7 @@
                        $record['type'] = $entityId->getEntityType();
                } else {
                        if ( in_array( 'info', $props ) ) {
-                               $title = 
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup()->getTitleForId( 
$entityId );
+                               $title = 
$this->entityTitleLookup->getTitleForId( $entityId );
                                $record['pageid'] = $title->getArticleID();
                                $record['ns'] = intval( $title->getNamespace() 
);
                                $record['title'] = $title->getPrefixedText();
diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php 
b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index 882341c..f58eab0 100644
--- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
@@ -17,6 +17,7 @@
 use Wikibase\PropertySomeValueSnak;
 use Wikibase\PropertyValueSnak;
 use Wikibase\Reference;
+use Wikibase\Repo\WikibaseRepo;
 use Wikibase\SnakList;
 
 /**
@@ -36,7 +37,28 @@
        }
 
        protected function getResultBuilder( $result ){
-               return new ResultBuilder( $result );
+               $mockTitle = $this->getMockBuilder( '\Title' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mockTitle->expects( $this->any() )
+                       ->method( 'getArticleID' )
+                       ->will( $this->returnValue( 123 ) );
+               $mockTitle->expects( $this->any() )
+                       ->method( 'getNamespace' )
+                       ->will( $this->returnValue( 456 ) );
+               $mockTitle->expects( $this->any() )
+                       ->method( 'getPrefixedText' )
+                       ->will( $this->returnValue( 'MockPrefixedText' ) );
+
+               $mockEntityTitleLookup = $this->getMock( 
'\Wikibase\EntityTitleLookup' );
+               $mockEntityTitleLookup->expects( $this->any() )
+                       ->method( 'getTitleForId' )
+                       ->will(  $this->returnValue( $mockTitle ) );
+
+               return new ResultBuilder(
+                       $result,
+                       $mockEntityTitleLookup
+               );
        }
 
        public function testCanConstruct(){
@@ -108,9 +130,9 @@
                $entityRevision = new EntityRevision( $item, 33, 
'20131126202923' );
 
                $expected = array( 'entities' => array( 'Q123098' => array(
-                       'pageid' => 0,
-                       'ns' => 120,
-                       'title' => 'Item:Q123098',
+                       'pageid' => 123, //mocked
+                       'ns' => 456, //mocked
+                       'title' => 'MockPrefixedText', //mocked
                        'id' => 'Q123098',
                        'type' => 'item',
                        'lastrevid' => 33,
@@ -504,4 +526,4 @@
 
                $this->assertEquals( $expected, $result->getData() );
        }
-}
+}
\ No newline at end of file

-- 
To view, visit https://gerrit.wikimedia.org/r/98099
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I874557b7eac1a62ec9c77859bc59856c825d80c3
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to