jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/390301 )
Change subject: Make AffectedPagesFinder take DESCRIPTION_USAGE into account
......................................................................
Make AffectedPagesFinder take DESCRIPTION_USAGE into account
Bug: T176417
Change-Id: Ib5d212ad81569ef7a651f96f30cae8d8ae79c17e
---
M client/includes/Changes/AffectedPagesFinder.php
M client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
M lib/includes/Changes/EntityChangeFactory.php
3 files changed, 71 insertions(+), 2 deletions(-)
Approvals:
WMDE-leszek: Looks good to me, but someone else must approve
jenkins-bot: Verified
Thiemo Mättig (WMDE): Looks good to me, approved
diff --git a/client/includes/Changes/AffectedPagesFinder.php
b/client/includes/Changes/AffectedPagesFinder.php
index 8a3bdc8..fe66f77 100644
--- a/client/includes/Changes/AffectedPagesFinder.php
+++ b/client/includes/Changes/AffectedPagesFinder.php
@@ -161,6 +161,16 @@
$remainingDiffOps -= count( $labelAspects );
}
}
+
+ if ( $diff instanceof EntityDiff &&
!$diff->getDescriptionsDiff()->isEmpty() ) {
+ $descriptionsDiff = $diff->getDescriptionsDiff();
+
+ if ( !empty( $descriptionsDiff ) ) {
+ $descriptionsAspects =
$this->getChangedDescriptionAspects( $descriptionsDiff );
+ $aspects = array_merge( $aspects,
$descriptionsAspects );
+ $remainingDiffOps -= count(
$descriptionsAspects );
+ }
+ }
// FIXME: EntityChange suppresses various kinds of diffs (see
above). T113468.
if ( $remainingDiffOps > 0 ) {
@@ -193,6 +203,28 @@
}
/**
+ * @param Diff $descriptionsDiff
+ *
+ * @return string[]
+ */
+ private function getChangedDescriptionAspects( Diff $descriptionsDiff )
{
+ $aspects = [];
+
+ foreach ( $descriptionsDiff as $lang => $diffOp ) {
+ $aspects[] = EntityUsage::makeAspectKey(
EntityUsage::DESCRIPTION_USAGE, $lang );
+ }
+
+ if ( $this->trackUsagesInAllLanguages ) {
+ // On multi-lingual wikis where users can request pages
in any language, we can not
+ // optimize for one language fallback chain only. Since
all possible language fallback
+ // chains must cover all languages, we can simply track
an "all languages" usage.
+ $aspects[] = EntityUsage::makeAspectKey(
EntityUsage::DESCRIPTION_USAGE );
+ }
+
+ return $aspects;
+ }
+
+ /**
* Returns the page updates implied by the given the change.
*
* @param EntityChange $change
diff --git a/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
b/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
index 2167b5a..7f07c52 100644
--- a/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
+++ b/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
@@ -189,6 +189,14 @@
$this->getItemWithSiteLinks( $q1, [ 'enwiki' =>
'1' ], $badges ) )
];
+ $cases['description only change on Q1'] = [
+ [ EntityUsage::DESCRIPTION_USAGE . '.en' ],
+ $changeFactory->newFromUpdate(
+ EntityChange::UPDATE,
+ $this->getItemWithDescriptions( $q1, [ 'en' =>
'Hello' ] ),
+ $this->getItemWithDescriptions( $q1, [ 'en' =>
'Hallo' ] ) )
+ ];
+
$cases['statement change on Q1'] = [
[ EntityUsage::OTHER_USAGE ],
$changeFactory->newFromUpdate(
@@ -236,6 +244,8 @@
$q1TitleUsage = new EntityUsage( $q1, EntityUsage::TITLE_USAGE
);
$q2TitleUsage = new EntityUsage( $q2, EntityUsage::TITLE_USAGE
);
+ $q2DescriptionUsage_en = new EntityUsage( $q2,
EntityUsage::DESCRIPTION_USAGE, 'en' );
+
// Page 1 is linked to Q1
$page1Q1Usages = new PageEntityUsages( 1, [
$q1SitelinkUsage,
@@ -245,6 +255,7 @@
$page2Q1Usages = new PageEntityUsages( 2, [
$q1LabelUsage_en,
$q1TitleUsage,
+ $q2DescriptionUsage_en,
] );
// Page 1 uses label and title to link to Q2, and shows the
German label too.
@@ -448,6 +459,19 @@
)
];
+ $cases['local description change on Q2 (used by page 2)'] = [
+ [
+ new PageEntityUsages( 2, [
$q2DescriptionUsage_en ] ),
+ ],
+ [ EntityUsage::DESCRIPTION_USAGE . '.en' ],
+ [ $page2Q2Usages ],
+ $changeFactory->newFromUpdate(
+ EntityChange::UPDATE,
+ new Item( $q2 ),
+ $this->getItemWithDescriptions( $q2, [ 'en' =>
'Wow' ] )
+ )
+ ];
+
return $cases;
}
@@ -543,6 +567,21 @@
/**
* @param ItemId $id
+ * @param string[] $descriptions
+ *
+ * @return Item
+ */
+ private function getItemWithDescriptions( ItemId $id, $descriptions ) {
+ $item = new Item( $id );
+ foreach ( $descriptions as $language => $value ) {
+ $item->setDescription( $language, $value );
+ }
+
+ return $item;
+ }
+
+ /**
+ * @param ItemId $id
* @param string $languageCode
* @param string[] $aliases
*
diff --git a/lib/includes/Changes/EntityChangeFactory.php
b/lib/includes/Changes/EntityChangeFactory.php
index e3e85a4..82c2aa9 100644
--- a/lib/includes/Changes/EntityChangeFactory.php
+++ b/lib/includes/Changes/EntityChangeFactory.php
@@ -11,7 +11,6 @@
use Wikibase\DataModel\Statement\StatementListProvider;
use Wikibase\DataModel\Term\AliasGroupList;
use Wikibase\DataModel\Term\FingerprintProvider;
-use Wikibase\DataModel\Term\TermList;
use Wikibase\EntityChange;
use Wikimedia\Assert\Assert;
@@ -179,7 +178,6 @@
if ( $entity instanceof FingerprintProvider ) {
$fingerprint = $entity->getFingerprint();
- $fingerprint->setDescriptions( new TermList() );
$fingerprint->setAliasGroups( new AliasGroupList() );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/390301
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib5d212ad81569ef7a651f96f30cae8d8ae79c17e
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits