jenkins-bot has submitted this change and it was merged.
Change subject: Add tests for StatementTransclusionInteractor
......................................................................
Add tests for StatementTransclusionInteractor
This covers more error cases and includes some
integration testing, using a RevisionBasedEntityLookup
as is done in the client for this.
and remove the wfLogWarning call
Bug: T114290
Change-Id: I6c6aec9d88d707a91bea29c590a77827cb564eee
---
M client/includes/DataAccess/StatementTransclusionInteractor.php
M
client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
2 files changed, 69 insertions(+), 37 deletions(-)
Approvals:
Hoo man: Looks good to me, approved
Thiemo Mättig (WMDE): Looks good to me, but someone else must approve
jenkins-bot: Verified
diff --git a/client/includes/DataAccess/StatementTransclusionInteractor.php
b/client/includes/DataAccess/StatementTransclusionInteractor.php
index 28e9d8e..0ad127c 100644
--- a/client/includes/DataAccess/StatementTransclusionInteractor.php
+++ b/client/includes/DataAccess/StatementTransclusionInteractor.php
@@ -84,11 +84,6 @@
try {
$entity = $this->entityLookup->getEntity( $entityId );
} catch ( RevisionedUnresolvedRedirectException $ex ) {
- // We probably hit a double redirect
- wfLogWarning(
- 'Encountered a UnresolvedRedirectException when
trying to load ' . $entityId->getSerialization()
- );
-
return '';
}
diff --git
a/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
b/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
index e8b3205..dd5a2f9 100644
---
a/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
+++
b/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
@@ -10,12 +10,17 @@
use Wikibase\Client\DataAccess\StatementTransclusionInteractor;
use Wikibase\Client\PropertyLabelNotResolvedException;
use Wikibase\Client\Usage\EntityUsage;
+use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\EntityIdValue;
+use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\PropertyId;
use Wikibase\DataModel\Snak\PropertyValueSnak;
use Wikibase\DataModel\Snak\Snak;
+use Wikibase\EntityRevision;
use Wikibase\Lib\SnakFormatter;
+use Wikibase\Lib\Store\RevisionBasedEntityLookup;
+use Wikibase\Lib\Store\RevisionedUnresolvedRedirectException;
/**
* @covers Wikibase\Client\DataAccess\StatementTransclusionInteractor
@@ -31,29 +36,6 @@
*/
class StatementTransclusionInteractorTest extends PHPUnit_Framework_TestCase {
- /**
- * @param PropertyIdResolver $propertyIdResolver
- * @param SnaksFinder $snaksFinder
- * @param string $languageCode
- *
- * @return StatementTransclusionInteractor
- */
- private function getInteractor(
- PropertyIdResolver $propertyIdResolver,
- SnaksFinder $snaksFinder,
- $languageCode
- ) {
- $targetLanguage = Language::factory( $languageCode );
-
- return new StatementTransclusionInteractor(
- $targetLanguage,
- $propertyIdResolver,
- $snaksFinder,
- $this->getSnakFormatter(),
- $this->getEntityLookup()
- );
- }
-
public function testRender() {
$propertyId = new PropertyId( 'P1337' );
$snaks = array(
@@ -63,8 +45,7 @@
$renderer = $this->getInteractor(
$this->getPropertyIdResolver(),
- $this->getSnaksFinder( $snaks ),
- 'en'
+ $snaks
);
$q42 = new ItemId( 'Q42' );
@@ -77,12 +58,50 @@
public function testRender_PropertyLabelNotResolvedException() {
$renderer = $this->getInteractor(
$this->getPropertyIdResolverForPropertyNotFound(),
- $this->getSnaksFinder( array() ),
- 'en'
+ array()
);
$this->setExpectedException(
'Wikibase\Client\PropertyLabelNotResolvedException' );
$renderer->render( new ItemId( 'Q42' ), 'blah' );
+ }
+
+ public function testRender_unresolvedRedirect() {
+ $renderer = $this->getInteractor(
+ $this->getPropertyIdResolver(),
+ array()
+ );
+
+ $this->assertEquals( '', $renderer->render( new ItemId( 'Q43'
), 'P1337' ) );
+ }
+
+ public function testRender_unknownEntity() {
+ $renderer = $this->getInteractor(
+ $this->getPropertyIdResolver(),
+ array()
+ );
+
+ $this->assertEquals( '', $renderer->render( new ItemId(
'Q43333' ), 'P1337' ) );
+ }
+
+ /**
+ * @param PropertyIdResolver $propertyIdResolver
+ * @param Snak[] $snaks
+ *
+ * @return StatementTransclusionInteractor
+ */
+ private function getInteractor(
+ PropertyIdResolver $propertyIdResolver,
+ array $snaks
+ ) {
+ $targetLanguage = Language::factory( 'en' );
+
+ return new StatementTransclusionInteractor(
+ $targetLanguage,
+ $propertyIdResolver,
+ $this->getSnaksFinder( $snaks ),
+ $this->getSnakFormatter(),
+ $this->getEntityLookup()
+ );
}
/**
@@ -161,12 +180,30 @@
}
private function getEntityLookup() {
- $lookup = $this->getMock(
'Wikibase\DataModel\Services\Lookup\EntityLookup' );
+ return new RevisionBasedEntityLookup(
$this->getEntityRevisionLookup() );
+ }
+
+ private function getEntityRevisionLookup() {
+ $lookup = $this->getMock(
'Wikibase\Lib\Store\EntityRevisionLookup' );
+
$lookup->expects( $this->any() )
- ->method( 'getEntity' )
- ->will( $this->returnValue(
- $this->getMock(
'Wikibase\DataModel\StatementListProvider' )
- ) );
+ ->method( 'getEntityRevision' )
+ ->will( $this->returnCallback( function( EntityId
$entityId ) {
+ if ( $entityId->getSerialization() === 'Q42' ) {
+ return new EntityRevision(
+ new Item( new ItemId( 'Q42' ) )
+ );
+ } elseif ( $entityId->getSerialization() ===
'Q43' ) {
+ // Unresolved redirect, derived from
EntityLookupException
+ throw new
RevisionedUnresolvedRedirectException(
+ $entityId,
+ new ItemId( 'Q404' )
+ );
+ } else {
+ return null;
+ }
+ } )
+ );
return $lookup;
}
--
To view, visit https://gerrit.wikimedia.org/r/242850
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6c6aec9d88d707a91bea29c590a77827cb564eee
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits