Thiemo Mättig (WMDE) has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/337812 )
Change subject: Remove type safety violation from
OutputPageBeforeHTMLHookHandler
......................................................................
Remove type safety violation from OutputPageBeforeHTMLHookHandler
This code assumes all entities do have labels and descriptions. This patch does
not solve this problem. All it does is moving the existing type safety violation
from OutputPageBeforeHTMLHookHandler one level deeper to
EntityViewPlaceholderExpander.
This is a step in a series of changes, uploaded as a seperate patch to minimize
the diff and make reviewing this as easy as possible.
Change-Id: Ie723c0256018fcc600e0a5b3d46a68da36a72c69
---
M repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
M repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
M repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
3 files changed, 17 insertions(+), 54 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/12/337812/1
diff --git a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
index 6a86e34..b793e0e 100644
--- a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
+++ b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
@@ -235,17 +235,10 @@
array $termsListItemsHtml = null,
$languageCode
) {
- // FIXME: This is not necessarily true for all entity types.
- $labelsProvider = $entity;
- $descriptionsProvider = $entity;
- $aliasesProvider = $entity instanceof AliasesProvider ? $entity
: null;
-
return new EntityViewPlaceholderExpander(
$this->templateFactory,
$user,
- $labelsProvider,
- $descriptionsProvider,
- $aliasesProvider,
+ $entity,
array_unique( array_merge( [ $languageCode ],
$termsLanguages ) ),
new MediaWikiLanguageDirectionalityLookup(),
$this->languageNameLookup,
diff --git a/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
b/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
index a967bd0..073759e 100644
--- a/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
+++ b/repo/includes/ParserOutput/EntityViewPlaceholderExpander.php
@@ -6,9 +6,8 @@
use MWException;
use RuntimeException;
use User;
+use Wikibase\DataModel\Entity\EntityDocument;
use Wikibase\DataModel\Term\AliasesProvider;
-use Wikibase\DataModel\Term\DescriptionsProvider;
-use Wikibase\DataModel\Term\LabelsProvider;
use Wikibase\Lib\LanguageNameLookup;
use Wikibase\View\LanguageDirectionalityLookup;
use Wikibase\View\LocalizedTextProvider;
@@ -38,19 +37,9 @@
private $user;
/**
- * @var LabelsProvider
+ * @var EntityDocument
*/
- private $labelsProvider;
-
- /**
- * @var DescriptionsProvider
- */
- private $descriptionsProvider;
-
- /**
- * @var AliasesProvider|null
- */
- private $aliasesProvider;
+ private $entity;
/**
* @var string[]
@@ -80,9 +69,7 @@
/**
* @param TemplateFactory $templateFactory
* @param User $user the current user
- * @param LabelsProvider $labelsProvider
- * @param DescriptionsProvider $descriptionsProvider
- * @param AliasesProvider|null $aliasesProvider
+ * @param EntityDocument $entity
* @param string[] $termsLanguages
* @param LanguageDirectionalityLookup $languageDirectionalityLookup
* @param LanguageNameLookup $languageNameLookup
@@ -92,9 +79,7 @@
public function __construct(
TemplateFactory $templateFactory,
User $user,
- LabelsProvider $labelsProvider,
- DescriptionsProvider $descriptionsProvider,
- AliasesProvider $aliasesProvider = null,
+ EntityDocument $entity,
array $termsLanguages,
LanguageDirectionalityLookup $languageDirectionalityLookup,
LanguageNameLookup $languageNameLookup,
@@ -102,9 +87,7 @@
array $termsListItems = array()
) {
$this->user = $user;
- $this->labelsProvider = $labelsProvider;
- $this->descriptionsProvider = $descriptionsProvider;
- $this->aliasesProvider = $aliasesProvider;
+ $this->entity = $entity;
$this->templateFactory = $templateFactory;
$this->termsLanguages = $termsLanguages;
$this->languageDirectionalityLookup =
$languageDirectionalityLookup;
@@ -191,10 +174,11 @@
if ( isset( $this->termsListItems[ $languageCode ] ) ) {
$contentHtml .= $this->termsListItems[
$languageCode ];
} else {
+ // FIXME: This still assumes all entity types
do have labels and descriptions!
$contentHtml .= $termsListView->getListItemHtml(
- $this->labelsProvider,
- $this->descriptionsProvider,
- $this->aliasesProvider,
+ $this->entity,
+ $this->entity,
+ $this->entity instanceof
AliasesProvider ? $this->entity : null,
$languageCode
);
}
diff --git
a/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
b/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
index 0bf2fd7..cb24897 100644
---
a/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
+++
b/repo/tests/phpunit/includes/ParserOutput/EntityViewPlaceholderExpanderTest.php
@@ -6,7 +6,6 @@
use User;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
-use Wikibase\DataModel\Term\AliasesProvider;
use Wikibase\Lib\LanguageNameLookup;
use Wikibase\Repo\ParserOutput\EntityViewPlaceholderExpander;
use Wikibase\View\DummyLocalizedTextProvider;
@@ -31,12 +30,10 @@
/**
* @param User $user
* @param Item $item
- * @param ItemId $itemId
- * @param AliasesProvider|null $aliasesProvider
*
* @return EntityViewPlaceholderExpander
*/
- private function newExpander( User $user, Item $item, ItemId $itemId,
AliasesProvider $aliasesProvider = null ) {
+ private function newExpander( User $user, Item $item ) {
$templateFactory = TemplateFactory::getDefaultInstance();
$termsLanguages = [ 'de', 'en', 'ru' ];
@@ -47,8 +44,6 @@
$templateFactory,
$user,
$item,
- $item,
- $aliasesProvider,
$termsLanguages,
$this->getMock( LanguageDirectionalityLookup::class ),
$languageNameLookup,
@@ -58,21 +53,12 @@
public function provideEntityAndAliases() {
$item = new Item( new ItemId( 'Q23' ) );
-
$item->setLabel( 'en', 'Moskow' );
$item->setLabel( 'de', 'Moskau' );
-
$item->setDescription( 'de', 'Hauptstadt Russlands' );
return [
- [
- $item,
- $item
- ],
- [
- $item,
- null
- ]
+ [ $item ],
];
}
@@ -98,8 +84,8 @@
/**
* @dataProvider provideEntityAndAliases
*/
- public function testGetHtmlForPlaceholder( Item $item, AliasesProvider
$aliasesProvider = null ) {
- $expander = $this->newExpander( $this->newUser(), $item,
$item->getId(), $aliasesProvider );
+ public function testGetHtmlForPlaceholder( Item $item ) {
+ $expander = $this->newExpander( $this->newUser(), $item );
$html = $expander->getHtmlForPlaceholder( 'termbox' );
$this->assertInternalType( 'string', $html );
@@ -108,8 +94,8 @@
/**
* @dataProvider provideEntityAndAliases
*/
- public function testRenderTermBox( Item $item, AliasesProvider
$aliasesProvider = null ) {
- $expander = $this->newExpander( $this->newUser(), $item,
$item->getId(), $aliasesProvider );
+ public function testRenderTermBox( Item $item ) {
+ $expander = $this->newExpander( $this->newUser(), $item );
// According to the mock objects, this should generate a term
box for
// 'de' and 'ru', since 'en' is already covered by the
interface language.
--
To view, visit https://gerrit.wikimedia.org/r/337812
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie723c0256018fcc600e0a5b3d46a68da36a72c69
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits