jenkins-bot has submitted this change and it was merged.

Change subject: MergeItemsTest: assert redirect creation
......................................................................


MergeItemsTest: assert redirect creation

Change-Id: Id6376fd16748a0f79f5c91de3a6a716d29ccf597
---
M repo/tests/phpunit/includes/api/MergeItemsTest.php
1 file changed, 41 insertions(+), 15 deletions(-)

Approvals:
  Addshore: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/tests/phpunit/includes/api/MergeItemsTest.php 
b/repo/tests/phpunit/includes/api/MergeItemsTest.php
index c59c1fc..c2c15d5 100644
--- a/repo/tests/phpunit/includes/api/MergeItemsTest.php
+++ b/repo/tests/phpunit/includes/api/MergeItemsTest.php
@@ -9,7 +9,7 @@
 use Wikibase\Repo\Api\ApiErrorReporter;
 use Wikibase\Repo\Api\MergeItems;
 use Wikibase\DataModel\Entity\BasicEntityIdParser;
-use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\Repo\Interactors\ItemMergeInteractor;
 use Wikibase\Repo\Interactors\RedirectCreationInteractor;
 use Wikibase\Repo\WikibaseRepo;
@@ -101,25 +101,34 @@
        }
 
        /**
+        * @param EntityRedirect|null $redirect
+        *
         * @return RedirectCreationInteractor
         */
-       public function getMockRedirectCreationInteractor() {
+       public function getMockRedirectCreationInteractor( EntityRedirect 
$redirect = null ) {
                $mock = $this->getMockBuilder( 
'Wikibase\Repo\Interactors\RedirectCreationInteractor' )
                        ->disableOriginalConstructor()
                        ->getMock();
 
-               $mock->expects( $this->any() )
-                       ->method( 'createRedirect' )
-                       ->will( $this->returnCallback( function( EntityId 
$fromId, EntityId $toId, $bot ) {
-                               return new EntityRedirect( $fromId, $toId );
-                       } ) );
+               if ( $redirect ) {
+                       $mock->expects( $this->once() )
+                               ->method( 'createRedirect' )
+                               ->with( $redirect->getEntityId(), 
$redirect->getTargetId() )
+                               ->will( $this->returnCallback( function() use ( 
$redirect ) {
+                                       return $redirect;
+                               } ) );
+               } else {
+                       $mock->expects( $this->never() )
+                               ->method( 'createRedirect' );
+               }
+
                return $mock;
        }
 
        /**
         * @param MergeItems $module
         */
-       private function overrideServices( MergeItems $module ) {
+       private function overrideServices( MergeItems $module, EntityRedirect 
$expectedRedirect = null ) {
                $idParser = new BasicEntityIdParser();
 
                $errorReporter = new ApiErrorReporter(
@@ -148,14 +157,14 @@
                                $this->getPermissionCheckers(),
                                $summaryFormatter,
                                $module->getUser(),
-                               $this->getMockRedirectCreationInteractor()
+                               $this->getMockRedirectCreationInteractor( 
$expectedRedirect )
                        )
                );
        }
 
-       private function callApiModule( $params, User $user = null ) {
-               $module = $this->apiModuleTestHelper->newApiModule( 
'Wikibase\Repo\Api\MergeItems', 'wbmergeitems', $params, $user );
-               $this->overrideServices( $module );
+       private function callApiModule( $params, EntityRedirect 
$expectedRedirect = null ) {
+               $module = $this->apiModuleTestHelper->newApiModule( 
'Wikibase\Repo\Api\MergeItems', 'wbmergeitems', $params );
+               $this->overrideServices( $module, $expectedRedirect );
 
                $module->execute();
 
@@ -174,6 +183,7 @@
                        array(),
                        array(),
                        array( 'labels' => array( 'en' => array( 'language' => 
'en', 'value' => 'foo' ) ) ),
+                       true,
                );
                $testCases['IgnoreConflictSitelinksMerge'] = array(
                        array( 'sitelinks' => array(
@@ -186,7 +196,8 @@
                                'dewiki' => array( 'site' => 'dewiki', 'title' 
=> 'RemainTo' ),
                                'enwiki' => array( 'site' => 'enwiki', 'title' 
=> 'PlFrom' ),
                        ) ),
-                       'sitelink'
+                       false,
+                       'sitelink',
                );
                $testCases['claimMerge'] = array(
                        array( 'claims' => array( 'P1' => array( array( 
'mainsnak' => array(
@@ -197,6 +208,7 @@
                        array( 'claims' => array( 'P1' => array( array( 
'mainsnak' => array(
                                'snaktype' => 'value', 'property' => 'P1', 
'datavalue' => array( 'value' => 'imastring', 'type' => 'string' ) ),
                                'type' => 'statement', 'rank' => 'normal' ) ) ) 
),
+                       true,
                );
 
                return $testCases;
@@ -205,7 +217,7 @@
        /**
         * @dataProvider provideData
         */
-       public function testMergeRequest( $pre1, $pre2, $expectedFrom, 
$expectedTo, $ignoreConflicts = null ) {
+       public function testMergeRequest( $pre1, $pre2, $expectedFrom, 
$expectedTo, $expectRedirect, $ignoreConflicts = null ) {
                // -- set up params ---------------------------------
                $params = array(
                        'action' => 'wbmergeitems',
@@ -222,13 +234,17 @@
                $this->entityModificationTestHelper->putEntity( $pre2, 'Q2' );
 
                // -- do the request 
--------------------------------------------
-               $result = $this->callApiModule( $params );
+               $redirect = $expectRedirect ? new EntityRedirect( new ItemId( 
'Q1' ), new ItemId( 'Q2' ) ): null;
+               $result = $this->callApiModule( $params, $redirect );
 
                // -- check the result 
--------------------------------------------
                $this->assertResultCorrect( $result );
 
                // -- check the items 
--------------------------------------------
                $this->assertItemsCorrect( $result, $expectedFrom, $expectedTo 
);
+
+               // -- check redirect 
--------------------------------------------
+               $this->assertRedirectCorrect( $result, $redirect );
 
                // -- check the edit summaries 
--------------------------------------------
                $this->assertEditSummariesCorrect( $result );
@@ -256,6 +272,16 @@
                $this->entityModificationTestHelper->assertEntityEquals( 
$expectedTo, $actualTo );
        }
 
+       private function assertRedirectCorrect( array $result, EntityRedirect 
$redirect = null ) {
+               $this->assertArrayHasKey( 'redirected', $result );
+
+               if ( $redirect ) {
+                       $this->assertEquals( 1, $result['redirected'] );
+               } else {
+                       $this->assertEquals( 0, $result['redirected'] );
+               }
+       }
+
        private function assertEditSummariesCorrect( array $result ) {
                $this->entityModificationTestHelper->assertRevisionSummary( 
array( 'wbmergeitems' ), $result['from']['lastrevid'] );
                $this->entityModificationTestHelper->assertRevisionSummary( 
'/CustomSummary/', $result['from']['lastrevid'] );

-- 
To view, visit https://gerrit.wikimedia.org/r/223264
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Id6376fd16748a0f79f5c91de3a6a716d29ccf597
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to