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