Daniel Kinzler has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/151149

Change subject: Better handing for redirects in MockRepositors.
......................................................................

Better handing for redirects in MockRepositors.

Also adds more tests.

Change-Id: I9ac1493f3b57962fa12ecb6483c9081eeddea637
---
M lib/tests/phpunit/MockRepository.php
M lib/tests/phpunit/MockRepositoryTest.php
2 files changed, 53 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/49/151149/1

diff --git a/lib/tests/phpunit/MockRepository.php 
b/lib/tests/phpunit/MockRepository.php
index f0350eb..e6e4385 100644
--- a/lib/tests/phpunit/MockRepository.php
+++ b/lib/tests/phpunit/MockRepository.php
@@ -354,6 +354,8 @@
                        $rev->user = $user;
                }
 
+               unset( $this->redirects[$key] );
+
                $this->entities[$key][$revision] = $rev;
                ksort( $this->entities[$key] );
 
@@ -368,6 +370,11 @@
         */
        public function putRedirect( EntityRedirect $redirect ) {
                $key = $redirect->getEntityId()->getSerialization();
+
+               if ( isset( $this->entities[$key] ) ) {
+                       $this->removeEntity( $redirect->getEntityId() );
+               }
+
                $this->redirects[$key] = $redirect;
        }
 
@@ -379,15 +386,20 @@
         * @return Entity
         */
        public function removeEntity( EntityId $id ) {
-               $oldEntity = $this->getEntity( $id );
+               try {
+                       $oldEntity = $this->getEntity( $id );
 
-               if ( $oldEntity && ( $oldEntity instanceof Item ) ) {
-                       // clean up old sitelinks
-                       $this->unregisterSiteLinks( $oldEntity );
+                       if ( $oldEntity && ( $oldEntity instanceof Item ) ) {
+                               // clean up old sitelinks
+                               $this->unregisterSiteLinks( $oldEntity );
+                       }
+               } catch ( StorageException $ex ) {
+                       $oldEntity = null; // ignore
                }
 
                $key = $id->getPrefixedId();
                unset( $this->entities[$key] );
+               unset( $this->redirects[$key] );
 
                return $oldEntity;
        }
diff --git a/lib/tests/phpunit/MockRepositoryTest.php 
b/lib/tests/phpunit/MockRepositoryTest.php
index b3828c3..cd12048 100644
--- a/lib/tests/phpunit/MockRepositoryTest.php
+++ b/lib/tests/phpunit/MockRepositoryTest.php
@@ -551,7 +551,13 @@
                        $this->setExpectedException( $error );
                }
 
-               $rev = $this->repo->saveEntity( $entity, '', 
$GLOBALS['wgUser'], $flags, $baseRevId );
+               $rev = $this->repo->saveEntity( $entity, 'f00', 
$GLOBALS['wgUser'], $flags, $baseRevId );
+
+               $logEntry = $this->repo->getLogEntry( $rev->getRevision() );
+               $this->assertNotNull( $logEntry );
+               $this->assertEquals( $rev->getRevision(), $logEntry['revision'] 
);
+               $this->assertEquals( $entity->getId()->getSerialization(), 
$logEntry['entity'] );
+               $this->assertEquals( 'f00', $logEntry['summary'] );
 
                $this->assertEquals( $entity->getLabels(), 
$rev->getEntity()->getLabels() );
                $this->assertEquals( $entity->getLabels(), 
$this->repo->getEntity( $entity->getId() )->getLabels() );
@@ -559,7 +565,29 @@
                // test we can't mess with entities in the repo
                $entity->setLabel( 'en', 'STRANGE' );
                $entity = $this->repo->getEntity( $entity->getId() );
+               $this->assertNotNull( $entity );
                $this->assertNotEquals( 'STRANGE', $entity->getLabel( 'en' ) );
+       }
+
+       public function testSaveRedirect() {
+               $this->setupGetEntities();
+
+               $q10 = new ItemId( 'Q10' );
+               $q1 = new ItemId( 'Q1' );
+
+               $redirect = new EntityRedirect( $q10, $q1 );
+               $revId = $this->repo->saveRedirect( $redirect, 'redirected Q10 
to Q1', $GLOBALS['wgUser'] );
+
+               $this->assertGreaterThan( 0, $revId );
+
+               $logEntry = $this->repo->getLogEntry( $revId );
+               $this->assertNotNull( $logEntry );
+               $this->assertEquals( $revId, $logEntry['revision'] );
+               $this->assertEquals( 
$redirect->getEntityId()->getSerialization(), $logEntry['entity'] );
+               $this->assertEquals( 'redirected Q10 to Q1', 
$logEntry['summary'] );
+
+               $this->setExpectedException( 
'Wikibase\Lib\Store\UnresolvedRedirectException' );
+               $this->repo->getEntity( $q10 );
        }
 
        public function testGetLogEntry() {
@@ -619,6 +647,14 @@
                $this->assertFalse( $this->repo->hasEntity( $item->getId() ) );
        }
 
+       public function testDeleteRedirect( ) {
+               $redirect = new EntityRedirect( new ItemId( 'Q11' ), new 
ItemId( 'Q1' ) );
+               $this->repo->putRedirect( $redirect );
+
+               $this->repo->deleteEntity( $redirect->getEntityId(), 'testing', 
$GLOBALS['wgUser'] );
+               $this->assertNull( $this->repo->getEntity( 
$redirect->getEntityId() ) );
+       }
+
        public function testUpdateWatchlist() {
                $user = User::newFromName( "WikiPageEntityStoreTestUser2" );
 

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9ac1493f3b57962fa12ecb6483c9081eeddea637
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Daniel Kinzler <daniel.kinz...@wikimedia.de>

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

Reply via email to