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