Matěj Suchánek has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/384263 )
Change subject: Do not interrupt combined change when only badge is changed ...................................................................... Do not interrupt combined change when only badge is changed There was a todo note in the code that pointed this out. The helper method was copy&pasted from AffectedPagesFinder. Change-Id: Ic53ab531a35e10c8b27ce09a9c1979e11a74eb07 --- M client/includes/Changes/ChangeRunCoalescer.php M client/tests/phpunit/includes/Changes/ChangeRunCoalescerTest.php 2 files changed, 34 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/63/384263/1 diff --git a/client/includes/Changes/ChangeRunCoalescer.php b/client/includes/Changes/ChangeRunCoalescer.php index ce9acfd..1369684 100644 --- a/client/includes/Changes/ChangeRunCoalescer.php +++ b/client/includes/Changes/ChangeRunCoalescer.php @@ -2,6 +2,8 @@ namespace Wikibase\Client\Changes; +use Diff\DiffOp\Diff\Diff; +use Diff\DiffOp\DiffOp; use Exception; use MWException; use Wikibase\Change; @@ -196,6 +198,15 @@ } /** + * @param DiffOp $siteLinkDiffOp + * + * @return bool + */ + private function isBadgesOnlyChange( DiffOp $siteLinkDiffOp ) { + return $siteLinkDiffOp instanceof Diff && !array_key_exists( 'name', $siteLinkDiffOp ); + } + + /** * Coalesce consecutive changes by the same user to the same entity into one. * * A run of changes may be broken if the action performed changes (e.g. deletion @@ -230,8 +241,8 @@ if ( !$break && ( $change instanceof ItemChange ) ) { $siteLinkDiff = $change->getSiteLinkDiff(); - if ( isset( $siteLinkDiff[ $this->localSiteId ] ) ) { - // TODO: don't break if only the link's badges changed + if ( isset( $siteLinkDiff[$this->localSiteId] ) + && !$this->isBadgesOnlyChange( $siteLinkDiff[$this->localSiteId] ) ) { $break = true; $breakNext = true; } diff --git a/client/tests/phpunit/includes/Changes/ChangeRunCoalescerTest.php b/client/tests/phpunit/includes/Changes/ChangeRunCoalescerTest.php index df39c27..4bc5c1c 100644 --- a/client/tests/phpunit/includes/Changes/ChangeRunCoalescerTest.php +++ b/client/tests/phpunit/includes/Changes/ChangeRunCoalescerTest.php @@ -69,6 +69,10 @@ $entity1->getSiteLinkList()->addNewSiteLink( 'dewiki', 'Testen' ); $repo->putEntity( $entity1, $offset + 14 ); + // entity 1, revision 1115 + $entity1->getSiteLinkList()->setSiteLink( new SiteLink( 'enwiki', 'Original', [ new ItemId( 'Q12345' ) ] ) ); + $repo->putEntity( $entity1, $offset + 15 ); + // entity 1, revision 1117 $entity1->getSiteLinkList()->setSiteLink( new SiteLink( 'enwiki', 'Spam', [ new ItemId( 'Q12345' ) ] ) ); $repo->putEntity( $entity1, $offset + 17 ); @@ -270,6 +274,17 @@ 'parent_id' => 1113, ] ); + // change link to other wiki + $update11Badge = $this->makeChange( [ + 'id' => ++$id, + 'type' => 'wikibase-item~update', + 'time' => '20130101020305', + 'object_id' => 'Q1', + 'revision_id' => 1115, + 'user_id' => 1, + 'parent_id' => 1114, + ] ); + // change link to local wiki $update11Link = $this->makeChange( [ 'id' => ++$id, @@ -278,7 +293,7 @@ 'object_id' => 'Q1', 'revision_id' => 1117, 'user_id' => 1, - 'parent_id' => 1114, + 'parent_id' => 1115, ] ); // delete @@ -368,6 +383,11 @@ [ $update11, $update11Link ], // $expected ], + 'local link badge change' => [ + [ $update11, $update11Badge ], // $changes + [ $this->combineChanges( $update11, $update11Badge ) ], // $expected + ], + 'other link merges' => [ [ $update11, $update11XLink ], // $changes [ $this->combineChanges( $update11, $update11XLink ) ], // $expected -- To view, visit https://gerrit.wikimedia.org/r/384263 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic53ab531a35e10c8b27ce09a9c1979e11a74eb07 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Matěj Suchánek <matejsuchane...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits