Hoo man has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/355104 )
Change subject: Track Other usage in StatementTransclusionInteractor
......................................................................
Track Other usage in StatementTransclusionInteractor
Instead of doing that in parser function Runner.
Side effect: This will now also register an other usage
if used with Lua (so we will have both an other usage
and an all usage). If needed, we can special case this.
Change-Id: Id4ce8f3ac25e6cf553abf222a0d155a33fc908b3
---
M client/includes/DataAccess/PropertyParserFunction/Runner.php
M
client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
M client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibrary.php
M client/includes/DataAccess/StatementTransclusionInteractor.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
M client/tests/phpunit/includes/DataAccess/PropertyParserFunction/RunnerTest.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementsParserFunctionIntegrationTest.php
M
client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibraryTest.php
M
client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
10 files changed, 202 insertions(+), 66 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/04/355104/1
diff --git a/client/includes/DataAccess/PropertyParserFunction/Runner.php
b/client/includes/DataAccess/PropertyParserFunction/Runner.php
index 7322e71..64a1023 100644
--- a/client/includes/DataAccess/PropertyParserFunction/Runner.php
+++ b/client/includes/DataAccess/PropertyParserFunction/Runner.php
@@ -5,7 +5,6 @@
use Parser;
use PPFrame;
use Wikibase\DataModel\Services\Lookup\RestrictedEntityLookup;
-use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\Client\WikibaseClient;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\EntityIdParser;
@@ -100,13 +99,7 @@
$renderer = $this->rendererFactory->newRendererFromParser(
$parser, $type );
$rendered = $renderer->render( $entityId, $propertyLabelOrId );
- $result = $this->buildResult( $rendered );
-
- // Track usage of "other" (that is, not label/title/sitelinks)
data from the item.
- $usageAcc = new ParserOutputUsageAccumulator(
$parser->getOutput() );
- $usageAcc->addOtherUsage( $entityId );
-
- return $result;
+ return $this->buildResult( $rendered );
}
/**
diff --git
a/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
b/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
index f322495..e904649 100644
---
a/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
+++
b/client/includes/DataAccess/PropertyParserFunction/StatementGroupRendererFactory.php
@@ -147,7 +147,8 @@
$propertyIdResolver,
$this->snaksFinder,
$snakFormatter,
- $this->entityLookup
+ $this->entityLookup,
+ $usageAccumulator
);
return new LanguageAwareRenderer(
diff --git
a/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibrary.php
b/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibrary.php
index 801621b..8ff2b93 100644
---
a/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibrary.php
+++
b/client/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibrary.php
@@ -62,14 +62,16 @@
$propertyIdResolver,
new SnaksFinder(),
$plainTextSnakFormatter,
- $entityLookup
+ $entityLookup,
+ $this->getUsageAccumulator()
);
$richWikitextTransclusionInteractor = new
StatementTransclusionInteractor(
$lang,
$propertyIdResolver,
new SnaksFinder(),
$richWikitextSnakFormatter,
- $entityLookup
+ $entityLookup,
+ $this->getUsageAccumulator()
);
return new WikibaseLuaEntityBindings(
diff --git a/client/includes/DataAccess/StatementTransclusionInteractor.php
b/client/includes/DataAccess/StatementTransclusionInteractor.php
index 96e3e30..59e4614 100644
--- a/client/includes/DataAccess/StatementTransclusionInteractor.php
+++ b/client/includes/DataAccess/StatementTransclusionInteractor.php
@@ -4,6 +4,7 @@
use Language;
use Wikibase\Client\PropertyLabelNotResolvedException;
+use Wikibase\Client\Usage\UsageAccumulator;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Services\Lookup\EntityLookup;
use Wikibase\DataModel\Snak\Snak;
@@ -45,24 +46,32 @@
private $entityLookup;
/**
+ * @var UsageAccumulator
+ */
+ private $usageAccumulator;
+
+ /**
* @param Language $language
* @param PropertyIdResolver $propertyIdResolver
* @param SnaksFinder $snaksFinder
* @param SnakFormatter $snakFormatter
* @param EntityLookup $entityLookup
+ * @param UsageAccumulator $usageAccumulator
*/
public function __construct(
Language $language,
PropertyIdResolver $propertyIdResolver,
SnaksFinder $snaksFinder,
SnakFormatter $snakFormatter,
- EntityLookup $entityLookup
+ EntityLookup $entityLookup,
+ UsageAccumulator $usageAccumulator
) {
$this->language = $language;
$this->propertyIdResolver = $propertyIdResolver;
$this->snaksFinder = $snaksFinder;
$this->snakFormatter = $snakFormatter;
$this->entityLookup = $entityLookup;
+ $this->usageAccumulator = $usageAccumulator;
}
/**
@@ -81,10 +90,19 @@
try {
$entity = $this->entityLookup->getEntity( $entityId );
} catch ( RevisionedUnresolvedRedirectException $ex ) {
+ // Continue as if nothing happened (for usage tracking
purposes).
+ $entity = null;
+ }
+
+ if ( $entity && !( $entity instanceof StatementListProvider ) )
{
+ // For entities that can't have Statements, we don't
need to track usage,
+ // so just bail out.
return '';
}
- if ( !( $entity instanceof StatementListProvider ) ) {
+ $this->usageAccumulator->addOtherUsage( $entityId );
+
+ if ( $entity === null ) {
return '';
}
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
index a26b717..152df54 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/LanguageAwareRendererTest.php
@@ -12,6 +12,7 @@
use Wikibase\Client\DataAccess\SnaksFinder;
use Wikibase\Client\DataAccess\StatementTransclusionInteractor;
use Wikibase\Client\PropertyLabelNotResolvedException;
+use Wikibase\Client\Usage\HashUsageAccumulator;
use Wikibase\DataModel\Entity\EntityIdValue;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\Entity\PropertyId;
@@ -57,7 +58,8 @@
$propertyIdResolver,
$snaksFinder,
$this->getSnakFormatter(),
- $entityLookup
+ $entityLookup,
+ new HashUsageAccumulator()
);
return new LanguageAwareRenderer(
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
index 49ce8e1..fdaa350 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyParserFunctionIntegrationTest.php
@@ -10,6 +10,7 @@
use User;
use Wikibase\Client\Tests\DataAccess\WikibaseDataAccessTestItemSetUpHelper;
use Wikibase\Client\WikibaseClient;
+use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\Test\MockClientStore;
/**
@@ -75,31 +76,61 @@
public function testPropertyParserFunction_byPropertyLabel() {
$result = $this->parseWikitextToHtml(
'{{#property:LuaTestStringProperty}}' );
- $this->assertSame( "<p>Lua :)\n</p>", $result );
+ $this->assertSame( "<p>Lua :)\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'P342#L.de', 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testPropertyParserFunction_byPropertyId() {
$result = $this->parseWikitextToHtml( '{{#property:P342}}' );
- $this->assertSame( "<p>Lua :)\n</p>", $result );
+ $this->assertSame( "<p>Lua :)\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testPropertyParserFunction_arbitraryAccess() {
$result = $this->parseWikitextToHtml(
'{{#property:P342|from=Q32488}}' );
- $this->assertSame( "<p>Lua :)\n</p>", $result );
+ $this->assertSame( "<p>Lua :)\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32488#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testPropertyParserFunction_multipleValues() {
$result = $this->parseWikitextToHtml(
'{{#property:P342|from=Q32489}}' );
- $this->assertSame( "<p>Lua :), Lua :)\n</p>", $result
);
+ $this->assertSame( "<p>Lua :), Lua :)\n</p>",
$result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32489#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testPropertyParserFunction_arbitraryAccessNotFound() {
$result = $this->parseWikitextToHtml(
'{{#property:P342|from=Q1234567}}' );
- $this->assertSame( '', $result );
+ $this->assertSame( '', $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q1234567#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testPropertyParserFunction_byNonExistent() {
@@ -107,7 +138,13 @@
$this->assertRegExp(
'/<p.*class=".*wikibase-error.*">.*P2147483647.*<\/p>/',
- $result
+ $result->getText()
+ );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
);
}
@@ -117,14 +154,20 @@
'A page not connected to an item'
);
- $this->assertSame( '', $result );
+ $this->assertSame( '', $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
/**
* @param string $wikiText
* @param string $title
*
- * @return string HTML
+ * @return ParserOutput
*/
private function parseWikitextToHtml( $wikiText, $title =
'WikibaseClientDataAccessTest' ) {
$popt = new ParserOptions( User::newFromId( 0 ),
Language::factory( 'en' ) );
@@ -135,9 +178,7 @@
}
$parser = new Parser( [ 'class' => 'Parser' ] );
- $pout = $parser->parse( $wikiText, Title::newFromText( $title
), $popt, Parser::OT_HTML );
-
- return $pout->getText();
+ return $parser->parse( $wikiText, Title::newFromText( $title ),
$popt, Parser::OT_HTML );
}
}
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/RunnerTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/RunnerTest.php
index 1913e69..b705bf7 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/RunnerTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/RunnerTest.php
@@ -62,7 +62,6 @@
];
$this->assertEquals( $expected, $result );
- $this->assertUsageTracking( $itemId, EntityUsage::OTHER_USAGE,
$parser->getOutput() );
$this->assertSame( 0, $parser->mExpensiveFunctionCount );
}
@@ -101,7 +100,6 @@
];
$this->assertEquals( $expected, $result );
- $this->assertUsageTracking( $itemId, EntityUsage::OTHER_USAGE,
$parser->getOutput() );
$this->assertSame( 1, $parser->mExpensiveFunctionCount );
}
@@ -195,23 +193,6 @@
];
$this->assertEquals( $expected, $result );
- }
-
- private function assertUsageTracking( ItemId $id, $aspect, ParserOutput
$parserOutput ) {
- $usageAcc = new ParserOutputUsageAccumulator( $parserOutput );
- $usages = $usageAcc->getUsages();
- $expected = new EntityUsage( $id, $aspect );
-
- $usageIdentities = array_map(
- function ( EntityUsage $usage ) {
- return $usage->getIdentityString();
- },
- $usages
- );
-
- $expectedIdentities = [ $expected->getIdentityString() ];
-
- $this->assertEquals( $expectedIdentities, array_values(
$usageIdentities ) );
}
/**
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementsParserFunctionIntegrationTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementsParserFunctionIntegrationTest.php
index 0191060..29390ff 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementsParserFunctionIntegrationTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/StatementsParserFunctionIntegrationTest.php
@@ -6,10 +6,12 @@
use MediaWikiTestCase;
use Parser;
use ParserOptions;
+use ParserOutput;
use Title;
use User;
use Wikibase\Client\Tests\DataAccess\WikibaseDataAccessTestItemSetUpHelper;
use Wikibase\Client\WikibaseClient;
+use Wikibase\Client\Usage\ParserOutputUsageAccumulator;
use Wikibase\Test\MockClientStore;
/**
@@ -75,39 +77,75 @@
public function testStatementsParserFunction_byPropertyLabel() {
$result = $this->parseWikitextToHtml(
'{{#statements:LuaTestStringProperty}}' );
- $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result );
+ $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'P342#L.de', 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testStatementsParserFunction_byPropertyId() {
$result = $this->parseWikitextToHtml( '{{#statements:P342}}' );
- $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result );
+ $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testStatementsParserFunction_arbitraryAccess() {
$result = $this->parseWikitextToHtml(
'{{#statements:P342|from=Q32488}}' );
- $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result );
+ $this->assertSame(
"<p><span><span>Lua :)</span></span>\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32488#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testStatementsParserFunction_multipleValues() {
$result = $this->parseWikitextToHtml(
'{{#statements:P342|from=Q32489}}' );
- $this->assertSame( "<p><span><span>Lua :)</span>,
<span>Lua :)</span></span>\n</p>", $result );
+ $this->assertSame( "<p><span><span>Lua :)</span>,
<span>Lua :)</span></span>\n</p>", $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32489#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testStatementsParserFunction_arbitraryAccessNotFound() {
$result = $this->parseWikitextToHtml(
'{{#statements:P342|from=Q1234567}}' );
- $this->assertSame( '', $result );
+ $this->assertSame( '', $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q1234567#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testStatementsParserFunction_byNonExistent() {
- $result = $this->parseWikitextToHtml(
'{{#statements:P2147483647}}' );
+ $result = $this->parseWikitextToHtml(
'{{#statements:P2147483645}}' );
$this->assertRegExp(
- '/<p.*class=".*wikibase-error.*">.*P2147483647.*<\/p>/',
- $result
+ '/<p.*class=".*wikibase-error.*">.*P2147483645.*<\/p>/',
+ $result->getText()
+ );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [ 'Q32487#O' ],
+ array_keys( $usageAccumulator->getUsages() )
);
}
@@ -117,14 +155,20 @@
'A page not connected to an item'
);
- $this->assertSame( '', $result );
+ $this->assertSame( '', $result->getText() );
+
+ $usageAccumulator = new ParserOutputUsageAccumulator( $result );
+ $this->assertArrayEquals(
+ [],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
/**
* @param string $wikiText
* @param string $title
*
- * @return string HTML
+ * @return ParserOutput
*/
private function parseWikitextToHtml( $wikiText, $title =
'WikibaseClientDataAccessTest' ) {
$popt = new ParserOptions( User::newFromId( 0 ),
Language::factory( 'en' ) );
@@ -135,9 +179,7 @@
}
$parser = new Parser( [ 'class' => 'Parser' ] );
- $pout = $parser->parse( $wikiText, Title::newFromText( $title
), $popt, Parser::OT_HTML );
-
- return $pout->getText();
+ return $parser->parse( $wikiText, Title::newFromText( $title ),
$popt, Parser::OT_HTML );
}
}
diff --git
a/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibraryTest.php
b/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibraryTest.php
index 2354ae9..87ed50f 100644
---
a/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibraryTest.php
+++
b/client/tests/phpunit/includes/DataAccess/Scribunto/Scribunto_LuaWikibaseEntityLibraryTest.php
@@ -157,6 +157,7 @@
} else {
$this->assertArrayHasKey( 'Q885588#L.de', $usages );
}
+ $this->assertArrayHasKey( 'Q32488#O', $usages );
$this->assertSame( $allowDataAccessInUserLanguage, $cacheSplit
);
}
@@ -210,6 +211,7 @@
} else {
$this->assertArrayHasKey( 'Q885588#L.de', $usages );
}
+ $this->assertArrayHasKey( 'Q32488#O', $usages );
$this->assertSame( $allowDataAccessInUserLanguage, $cacheSplit
);
}
diff --git
a/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
b/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
index a41ffc1..f498f7c 100644
---
a/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
+++
b/client/tests/phpunit/includes/DataAccess/StatementTransclusionInteractorTest.php
@@ -9,6 +9,7 @@
use Wikibase\Client\DataAccess\SnaksFinder;
use Wikibase\Client\DataAccess\StatementTransclusionInteractor;
use Wikibase\Client\PropertyLabelNotResolvedException;
+use Wikibase\Client\Usage\HashUsageAccumulator;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\EntityIdValue;
use Wikibase\DataModel\Entity\Item;
@@ -57,50 +58,102 @@
'Q42$3' => new PropertyValueSnak( $propertyId, new
StringValue( '' ) ),
];
- $renderer = $this->getInteractor(
$this->getPropertyIdResolver(), $snaks, $format );
+ $usageAccumulator = new HashUsageAccumulator();
+ $renderer = $this->getInteractor(
$this->getPropertyIdResolver(), $snaks, $format, $usageAccumulator );
$result = $renderer->render( new ItemId( 'Q42' ), 'p1337' );
$this->assertSame( $expected, $result );
+
+ $this->assertEquals(
+ [ 'Q42#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testRender_PropertyLabelNotResolvedException() {
- $renderer = $this->getInteractor(
$this->getPropertyIdResolverForPropertyNotFound() );
+ $usageAccumulator = new HashUsageAccumulator();
+ $renderer = $this->getInteractor(
+ $this->getPropertyIdResolverForPropertyNotFound(),
+ [],
+ SnakFormatter::FORMAT_PLAIN,
+ $usageAccumulator
+ );
- $this->setExpectedException(
PropertyLabelNotResolvedException::class );
- $renderer->render( new ItemId( 'Q42' ), 'blah' );
+ $exceptionThrown = false;
+ try {
+ $renderer->render( new ItemId( 'Q42' ), 'blah' );
+ } catch ( PropertyLabelNotResolvedException $ex ) {
+ $exceptionThrown = true;
+ }
+ $this->assertTrue( $exceptionThrown,
'PropertyLabelNotResolvedException exception thrown' );
+
+ $this->assertEquals(
+ [ 'Q42#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
/**
* @dataProvider formatProvider
*/
public function testRender_empty( $format ) {
- $renderer = $this->getInteractor(
$this->getPropertyIdResolver(), [], $format );
+ $usageAccumulator = new HashUsageAccumulator();
+ $renderer = $this->getInteractor(
$this->getPropertyIdResolver(), [], $format, $usageAccumulator );
$this->assertSame( '', $renderer->render( new ItemId( 'Q42' ),
'P1337' ) );
+
+ $this->assertEquals(
+ [ 'Q42#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testRender_unresolvedRedirect() {
- $renderer = $this->getInteractor(
$this->getPropertyIdResolver() );
+ $usageAccumulator = new HashUsageAccumulator();
+ $renderer = $this->getInteractor(
+ $this->getPropertyIdResolver(),
+ [],
+ SnakFormatter::FORMAT_PLAIN,
+ $usageAccumulator
+ );
$this->assertSame( '', $renderer->render( new ItemId( 'Q43' ),
'P1337' ) );
+
+ $this->assertEquals(
+ [ 'Q43#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
public function testRender_unknownEntity() {
- $renderer = $this->getInteractor(
$this->getPropertyIdResolver() );
+ $usageAccumulator = new HashUsageAccumulator();
+ $renderer = $this->getInteractor(
+ $this->getPropertyIdResolver(),
+ [],
+ SnakFormatter::FORMAT_PLAIN,
+ $usageAccumulator
+ );
$this->assertSame( '', $renderer->render( new ItemId( 'Q43333'
), 'P1337' ) );
+
+ $this->assertEquals(
+ [ 'Q43333#O' ],
+ array_keys( $usageAccumulator->getUsages() )
+ );
}
/**
* @param PropertyIdResolver $propertyIdResolver
* @param Snak[] $snaks
* @param string $format One of the SnakFormatter::FORMAT_… constants
+ * @param HashUsageAccumulator|null $usageAccumulator
*
* @return StatementTransclusionInteractor
*/
private function getInteractor(
PropertyIdResolver $propertyIdResolver,
array $snaks = [],
- $format = SnakFormatter::FORMAT_PLAIN
+ $format = SnakFormatter::FORMAT_PLAIN,
+ HashUsageAccumulator $usageAccumulator = null
) {
$targetLanguage = Language::factory( 'en' );
@@ -109,7 +162,8 @@
$propertyIdResolver,
$this->getSnaksFinder( $snaks ),
$this->getSnakFormatter( $format ),
- $this->getEntityLookup()
+ $this->getEntityLookup(),
+ $usageAccumulator ?: new HashUsageAccumulator()
);
}
--
To view, visit https://gerrit.wikimedia.org/r/355104
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id4ce8f3ac25e6cf553abf222a0d155a33fc908b3
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits