Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/98099


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, 42 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/99/98099/1

diff --git a/repo/includes/api/ApiWikibase.php 
b/repo/includes/api/ApiWikibase.php
index 0fbe57b..a5bbf1a 100644
--- a/repo/includes/api/ApiWikibase.php
+++ b/repo/includes/api/ApiWikibase.php
@@ -34,8 +34,13 @@
        public function __construct( $mainModule, $moduleName, $modulePrefix = 
'' ) {
                parent::__construct( $mainModule, $moduleName, $modulePrefix );
 
+               $entityTitleLookup = 
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup();
+
                // todo inject serialization factory to result builder
-               $this->resultBuilder = new ResultBuilder( $this->getResult() );
+               $this->resultBuilder = new ResultBuilder(
+                       $this->getResult(),
+                       $entityTitleLookup
+               );
        }
 
        /**
diff --git a/repo/includes/api/ResultBuilder.php 
b/repo/includes/api/ResultBuilder.php
index 3eb168b..dacc1d6 100644
--- a/repo/includes/api/ResultBuilder.php
+++ b/repo/includes/api/ResultBuilder.php
@@ -11,6 +11,7 @@
 use Wikibase\Claims;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\EntityRevision;
+use Wikibase\EntityTitleLookup;
 use Wikibase\Lib\Serializers\AliasSerializer;
 use Wikibase\Lib\Serializers\ClaimSerializer;
 use Wikibase\Lib\Serializers\ClaimsSerializer;
@@ -22,7 +23,6 @@
 use Wikibase\Lib\Serializers\SerializerFactory;
 use Wikibase\Lib\Serializers\SiteLinkSerializer;
 use Wikibase\Reference;
-use Wikibase\Repo\WikibaseRepo;
 
 /**
  * Builder for Api Results
@@ -53,18 +53,25 @@
         * @var SerializerFactory
         */
        protected $serializerFactory;
+       /**
+        * @var EntityTitleLookup
+        */
+       private $entityTitleLookup;
 
        /**
         * @param ApiResult $result
+        * @param EntityTitleLookup $entityTitleLookup
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $result ) {
+       public function __construct( $result, EntityTitleLookup 
$entityTitleLookup ) {
                if( !$result instanceof ApiResult ){
                        throw new InvalidArgumentException( 'ResultBuilder must 
be constructed with an ApiResult' );
                }
 
                $this->result = $result;
+               $this->entityTitleLookup = $entityTitleLookup;
+
                //@todo inject me?
                $this->serializerFactory = new SerializerFactory();
                $this->missingEntityCounter = -1;
@@ -128,7 +135,7 @@
                        $this->addBasicEntityInformation( $entityId, 
$entityPath );
                } else {
                        if ( in_array( 'info', $props ) ) {
-                               $title = 
WikibaseRepo::getDefaultInstance()->getEntityTitleLookup()->getTitleForId( 
$entityId );
+                               $title = 
$this->entityTitleLookup->getTitleForId( $entityId );
                                $this->getResult()->addValue( $entityPath, 
'pageid', $title->getArticleID() );
                                $this->getResult()->addValue( $entityPath, 
'ns', intval( $title->getNamespace() ) );
                                $this->getResult()->addValue( $entityPath, 
'title', $title->getPrefixedText() );
diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php 
b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index 8820747..448ff26 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;
 
 /**
@@ -34,7 +35,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(){
@@ -106,9 +128,9 @@
                $entityRevision = new EntityRevision( $item, 33, 
'20131126202923' );
 
                $expected = array( 'entities' => array( 'Q123' => array(
-                       'pageid' => 0,
-                       'ns' => 120,
-                       'title' => 'Item:Q123',
+                       'pageid' => 123, //mocked
+                       'ns' => 456, //mocked
+                       'title' => 'MockPrefixedText', //mocked
                        'id' => 'Q123',
                        'type' => 'item',
                        'lastrevid' => 33,

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I874557b7eac1a62ec9c77859bc59856c825d80c3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>

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

Reply via email to