jenkins-bot has submitted this change and it was merged.
Change subject: Allow term boxes for entities without aliases
......................................................................
Allow term boxes for entities without aliases
Change-Id: Icd3f20aba399f82e810f6655e98ff077fd57cb04
---
M repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
M view/src/EntityTermsView.php
M view/src/EntityViewPlaceholderExpander.php
M view/tests/phpunit/EntityTermsViewTest.php
M view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
5 files changed, 69 insertions(+), 23 deletions(-)
Approvals:
Daniel Kinzler: Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
index 2738d60..08e6c48 100644
--- a/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
+++ b/repo/includes/Hooks/OutputPageBeforeHTMLHookHandler.php
@@ -4,6 +4,7 @@
use OutputPage;
use Wikibase\DataModel\Entity\EntityIdParser;
+use Wikibase\DataModel\Term\AliasesProvider;
use Wikibase\Lib\ContentLanguages;
use Wikibase\Lib\LanguageNameLookup;
use Wikibase\Lib\Store\EntityRevisionLookup;
@@ -164,7 +165,7 @@
$entity = $this->entityRevisionLookup->getEntityRevision(
$entityId, $revisionId )->getEntity();
$labelsProvider = $entity;
$descriptionsProvider = $entity;
- $aliasesProvider = $entity;
+ $aliasesProvider = $entity instanceof AliasesProvider ? $entity
: null;
return new EntityViewPlaceholderExpander(
$this->templateFactory,
diff --git a/view/src/EntityTermsView.php b/view/src/EntityTermsView.php
index ff03585..54d10fd 100644
--- a/view/src/EntityTermsView.php
+++ b/view/src/EntityTermsView.php
@@ -171,7 +171,7 @@
/**
* @param LabelsProvider $labelsProvider
* @param DescriptionsProvider $descriptionsProvider
- * @param AliasesProvider $aliasesProvider
+ * @param AliasesProvider|null $aliasesProvider
* @param string[] $languageCodes The languages the user requested to
be shown
* @param Title|null $title
*
@@ -180,7 +180,7 @@
public function getEntityTermsForLanguageListView(
LabelsProvider $labelsProvider,
DescriptionsProvider $descriptionsProvider,
- AliasesProvider $aliasesProvider,
+ AliasesProvider $aliasesProvider = null,
array $languageCodes,
Title $title = null
) {
@@ -208,7 +208,7 @@
/**
* @param LabelsProvider $labelsProvider
* @param DescriptionsProvider $descriptionsProvider
- * @param AliasesProvider $aliasesProvider
+ * @param AliasesProvider|null $aliasesProvider
* @param string $languageCode
* @param Title|null $title
*
@@ -217,7 +217,7 @@
private function getEntityTermsForLanguageView(
LabelsProvider $labelsProvider,
DescriptionsProvider $descriptionsProvider,
- AliasesProvider $aliasesProvider,
+ AliasesProvider $aliasesProvider = null,
$languageCode,
Title $title = null
) {
@@ -255,7 +255,7 @@
'',
''
),
- $this->getAliasesView(
$aliasesProvider->getAliasGroups(), $languageCode ),
+ $aliasesProvider ? $this->getAliasesView(
$aliasesProvider->getAliasGroups(), $languageCode ) : '',
''
);
}
diff --git a/view/src/EntityViewPlaceholderExpander.php
b/view/src/EntityViewPlaceholderExpander.php
index f100ea8..e6a6363 100644
--- a/view/src/EntityViewPlaceholderExpander.php
+++ b/view/src/EntityViewPlaceholderExpander.php
@@ -65,7 +65,7 @@
private $descriptionsProvider;
/**
- * @var AliasesProvider
+ * @var AliasesProvider|null
*/
private $aliasesProvider;
@@ -97,7 +97,7 @@
* @param EntityIdParser $entityIdParser
* @param LabelsProvider $labelsProvider
* @param DescriptionsProvider $descriptionsProvider
- * @param AliasesProvider $aliasesProvider
+ * @param AliasesProvider|null $aliasesProvider
* @param UserLanguageLookup $userLanguageLookup
* @param ContentLanguages $termsLanguages
* @param LanguageNameLookup $languageNameLookup
@@ -110,7 +110,7 @@
$entityIdParser,
LabelsProvider $labelsProvider,
DescriptionsProvider $descriptionsProvider,
- AliasesProvider $aliasesProvider,
+ AliasesProvider $aliasesProvider = null,
UserLanguageLookup $userLanguageLookup,
ContentLanguages $termsLanguages,
LanguageNameLookup $languageNameLookup
diff --git a/view/tests/phpunit/EntityTermsViewTest.php
b/view/tests/phpunit/EntityTermsViewTest.php
index f60bcf3..a3a8050 100644
--- a/view/tests/phpunit/EntityTermsViewTest.php
+++ b/view/tests/phpunit/EntityTermsViewTest.php
@@ -290,4 +290,32 @@
$this->assertNotContains( '(wikibase-aliases-empty)', $html );
}
+ public function
testGetEntityTermsForLanguageListView_noAliasesProvider() {
+ $title = $this->getMock( Title::class );
+ $title->expects( $this->once() )
+ ->method( 'getLocalURL' )
+ ->will( $this->returnValue( '<LOCALURL>' ) );
+
+ $item = new Item(
+ new ItemId( 'Q1' ),
+ $this->getFingerprint()
+ );
+ $view = $this->getEntityTermsView( 0, 1 );
+ $html = $view->getEntityTermsForLanguageListView( $item, $item,
null, array( 'en' ), $title );
+
+ $this->assertContains(
'(wikibase-entitytermsforlanguagelistview-language)', $html );
+ $this->assertContains(
'(wikibase-entitytermsforlanguagelistview-label)', $html );
+ $this->assertContains(
'(wikibase-entitytermsforlanguagelistview-description)', $html );
+ $this->assertContains(
'(wikibase-entitytermsforlanguagelistview-aliases)', $html );
+
+ $this->assertContains(
'wikibase-entitytermsforlanguageview-en', $html );
+ $this->assertContains( '<LOCALURL>', $html );
+ $this->assertContains( '<LANGUAGENAME-en>', $html );
+ $this->assertContains( '<LABEL>', $html );
+ $this->assertContains( '<DESCRIPTION>', $html );
+ $this->assertNotContains( '<ALIAS1>', $html );
+ $this->assertNotContains( '<ALIAS2>', $html );
+ $this->assertNotContains( '&', $html, 'no double escaping'
);
+ }
+
}
diff --git a/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
b/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
index f24cd32..b3d4d54 100644
--- a/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
+++ b/view/tests/phpunit/EntityViewPlaceholderExpanderTest.php
@@ -9,6 +9,7 @@
use Wikibase\DataModel\Entity\EntityIdParser;
use Wikibase\DataModel\Entity\Item;
use Wikibase\DataModel\Entity\ItemId;
+use Wikibase\DataModel\Term\AliasesProvider;
use Wikibase\Lib\LanguageNameLookup;
use Wikibase\Lib\MediaWikiContentLanguages;
use Wikibase\Lib\UserLanguageLookup;
@@ -35,10 +36,11 @@
* @param User $user
* @param Item $item
* @param ItemId $itemId
+ * @param AliasesProvider|null $aliasesProvider
*
* @return EntityViewPlaceholderExpander
*/
- private function newExpander( User $user, Item $item, ItemId $itemId ) {
+ private function newExpander( User $user, Item $item, ItemId $itemId,
AliasesProvider $aliasesProvider = null ) {
$templateFactory = TemplateFactory::getDefaultInstance();
$title = $this->getMockBuilder( Title::class )
@@ -69,14 +71,14 @@
$idParser,
$item,
$item,
- $item,
+ $aliasesProvider,
$userLanguages,
new MediaWikiContentLanguages(),
$languageNameLookup
);
}
- private function getItem() {
+ public function provideEntityAndAliases() {
$item = new Item( new ItemId( 'Q23' ) );
$item->setLabel( 'en', 'Moskow' );
@@ -84,7 +86,16 @@
$item->setDescription( 'de', 'Hauptstadt Russlands' );
- return $item;
+ return [
+ [
+ $item,
+ $item
+ ],
+ [
+ $item,
+ null
+ ]
+ ];
}
/**
@@ -106,17 +117,21 @@
return $user;
}
- public function testGetHtmlForPlaceholder() {
- $item = $this->getItem();
- $expander = $this->newExpander( $this->newUser(), $item,
$item->getId() );
+ /**
+ * @dataProvider provideEntityAndAliases
+ */
+ public function testGetHtmlForPlaceholder( Item $item, AliasesProvider
$aliasesProvider = null ) {
+ $expander = $this->newExpander( $this->newUser(), $item,
$item->getId(), $aliasesProvider );
$html = $expander->getHtmlForPlaceholder( 'termbox', 'Q23' );
$this->assertInternalType( 'string', $html );
}
- public function testRenderTermBox() {
- $item = $this->getItem();
- $expander = $this->newExpander( $this->newUser(), $item,
$item->getId() );
+ /**
+ * @dataProvider provideEntityAndAliases
+ */
+ public function testRenderTermBox( Item $item, AliasesProvider
$aliasesProvider = null ) {
+ $expander = $this->newExpander( $this->newUser(), $item,
$item->getId(), $aliasesProvider );
// According to the mock objects, this should generate a term
box for
// 'de' and 'ru', since 'en' is already covered by the
interface language.
@@ -132,14 +147,16 @@
$this->assertContains(
'wikibase-entitytermsforlanguageview-ru', $html );
}
- public function testGetExtraUserLanguages() {
- $item = $this->getItem();
+ /**
+ * @dataProvider provideEntityAndAliases
+ */
+ public function testGetExtraUserLanguage( Item $item, AliasesProvider
$aliasesProvider = null ) {
$itemId = $item->getId();
- $expander = $this->newExpander( $this->newUser( true ), $item,
$itemId );
+ $expander = $this->newExpander( $this->newUser( true ), $item,
$itemId, $aliasesProvider );
$this->assertArrayEquals( array(),
$expander->getExtraUserLanguages() );
- $expander = $this->newExpander( $this->newUser(), $item,
$itemId );
+ $expander = $this->newExpander( $this->newUser(), $item,
$itemId, $aliasesProvider );
$this->assertArrayEquals( array( 'de', 'ru' ),
$expander->getExtraUserLanguages() );
}
--
To view, visit https://gerrit.wikimedia.org/r/277986
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Icd3f20aba399f82e810f6655e98ff077fd57cb04
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Adrian Heine <[email protected]>
Gerrit-Reviewer: Adrian Heine <[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