Mwjames has uploaded a new change for review.

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


Change subject: Test was missing, didn't to catch a renaming issue (newCacheId)
......................................................................

Test was missing, didn't to catch a renaming issue (newCacheId)

ArticlePurge::newIdGenerator -> ArticlePurge::newCacheId

Change-Id: I2d8fd6dca1811cb74b41f8278bc7af0e2f262b4f
---
M SemanticMediaWiki.classes.php
M SemanticMediaWiki.hooks.php
A includes/hooks/TitleMoveComplete.php
M tests/phpunit/includes/HooksTest.php
A tests/phpunit/includes/hooks/TitleMoveCompleteTest.php
5 files changed, 253 insertions(+), 53 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticMediaWiki 
refs/changes/61/85661/1

diff --git a/SemanticMediaWiki.classes.php b/SemanticMediaWiki.classes.php
index 0236925..67e8a3a 100644
--- a/SemanticMediaWiki.classes.php
+++ b/SemanticMediaWiki.classes.php
@@ -103,6 +103,7 @@
        'SMW\CacheIdGenerator'            => 
'includes/cache/CacheIdGenerator.php',
 
        // Hooks
+       'SMW\TitleMoveComplete'            => 
'includes/hooks/TitleMoveComplete.php',
        'SMW\SpecialStatsAddExtra'         => 
'includes/hooks/SpecialStatsAddExtra.php',
        'SMW\OutputPageParserOutput'       => 
'includes/hooks/OutputPageParserOutput.php',
        'SMW\SkinAfterContent'             => 
'includes/hooks/SkinAfterContent.php',
diff --git a/SemanticMediaWiki.hooks.php b/SemanticMediaWiki.hooks.php
index 2e09ae6..2b1556a 100644
--- a/SemanticMediaWiki.hooks.php
+++ b/SemanticMediaWiki.hooks.php
@@ -550,18 +550,7 @@
         * @return true
         */
        public static function onTitleMoveComplete( &$oldTitle, &$newTitle, 
&$user, $oldId, $newId ) {
-
-               \SMW\CacheHandler::newFromId()->setCacheEnabled( $newId > 0 )
-                       ->setKey( \SMW\ArticlePurge::newIdGenerator( $newId ) )
-                       ->set( $GLOBALS['smwgAutoRefreshOnPageMove'] );
-
-               \SMW\CacheHandler::newFromId()->setCacheEnabled( $oldId > 0 )
-                       ->setKey( \SMW\ArticlePurge::newIdGenerator( $oldId ) )
-                       ->set( $GLOBALS['smwgAutoRefreshOnPageMove'] );
-
-               smwfGetStore()->changeTitle( $oldTitle, $newTitle, $oldId, 
$newId );
-
-               return true;
+               return \SMW\FunctionHookRegistry::register( new 
\SMW\TitleMoveComplete( $oldTitle, $newTitle, $user, $oldId, $newId ) 
)->process();
        }
 
        /**
diff --git a/includes/hooks/TitleMoveComplete.php 
b/includes/hooks/TitleMoveComplete.php
new file mode 100644
index 0000000..fac22a2
--- /dev/null
+++ b/includes/hooks/TitleMoveComplete.php
@@ -0,0 +1,98 @@
+<?php
+
+namespace SMW;
+
+/**
+ * TitleMoveComplete hook
+ *
+ * @file
+ *
+ * @license GNU GPL v2+
+ * @since   1.9
+ *
+ * @author mwjames
+ */
+
+/**
+ * TitleMoveComplete occurs whenever a request to move an article
+ * is completed
+ *
+ * This method will be called whenever an article is moved so that
+ * semantic properties are moved accordingly.
+ *
+ * @see http://www.mediawiki.org/wiki/Manual:Hooks/TitleMoveComplete
+ *
+ * @ingroup Hook
+ */
+class TitleMoveComplete extends FunctionHook {
+
+       /** @var Title */
+       protected $oldTitle = null;
+
+       /** @var Title */
+       protected $newTitle = null;
+
+       /** @var Use */
+       protected $user = null;
+
+       /** @var integer */
+       protected $oldId;
+
+       /** @var integer */
+       protected $newId;
+
+       /**
+        * @since  1.9
+        *
+        * @param Title $oldTitle old title
+        * @param Title $newTitle: new title
+        * @param Use $user user who did the move
+        * @param $oldId database ID of the page that's been moved
+        * @param $newId database ID of the created redirect
+        */
+       public function __construct( &$oldTitle, &$newTitle, &$user, $oldId, 
$newId ) {
+               $this->oldTitle = $oldTitle;
+               $this->newTitle = $newTitle;
+               $this->user = $user;
+               $this->oldId = $oldId;
+               $this->newId = $newId;
+       }
+
+       /**
+        * @see FunctionHook::process
+        *
+        * @since 1.9
+        *
+        * @return true
+        */
+       public function process() {
+
+               /**
+                * @var Store $store
+                */
+               $store = $this->getDependencyBuilder()->newObject( 'Store' );
+
+               /**
+                * @var Settings $settings
+                */
+               $settings = $this->getDependencyBuilder()->newObject( 
'Settings' );
+
+               /**
+                * @var CacheHandler $cache
+                */
+               $cache = $this->getDependencyBuilder()->newObject( 
'CacheHandler' );
+
+               $cache->setCacheEnabled( $this->newId > 0 )
+                       ->setKey( ArticlePurge::newCacheId( $this->newId ) )
+                       ->set( $settings->get( 'smwgAutoRefreshOnPageMove' ) );
+
+               $cache->setCacheEnabled( $this->oldId > 0 )
+                       ->setKey( ArticlePurge::newCacheId( $this->oldId ) )
+                       ->set( $settings->get( 'smwgAutoRefreshOnPageMove' ) );
+
+               $store->changeTitle( $this->oldTitle, $this->newTitle, 
$this->oldId, $this->newId );
+
+               return true;
+       }
+
+}
diff --git a/tests/phpunit/includes/HooksTest.php 
b/tests/phpunit/includes/HooksTest.php
index 398906c..ce22329 100644
--- a/tests/phpunit/includes/HooksTest.php
+++ b/tests/phpunit/includes/HooksTest.php
@@ -525,47 +525,6 @@
        }
 
        /**
-        * @test SMWHooks::onTitleMoveComplete
-        *
-        * @since 1.9
-        */
-       public function testOnTitleMoveComplete() {
-               // For some mysterious reasons this test causes
-               // SMW\Test\ApiAskTest::testExecute ... to fail with 
DBQueryError:
-               // Query: SELECT  o_serialized AS v0  FROM 
unittest_unittest_smw_fpt_mdat
-               // WHERE s_id='5'; it seems that the temp. unittest tables are
-               // being deleted while this test runs
-               $skip = true;
-
-               if ( !$skip && method_exists( 'WikiPage', 'doEditContent' ) ) {
-                       $wikiPage = $this->newPage();
-                       $user = $this->getUser();
-
-                       $title = $wikiPage->getTitle();
-                       $newTitle = $this->getTitle();
-                       $pageid = $wikiPage->getId();
-
-                       $content = \ContentHandler::makeContent(
-                               'testing',
-                               $title,
-                               CONTENT_MODEL_WIKITEXT
-                       );
-                       $wikiPage->doEditContent( $content, "testing", 
EDIT_NEW, false, $user );
-
-                       $result = SMWHooks::onTitleMoveComplete( $title, 
$newTitle, $user, $pageid, $pageid );
-
-                       // Always make sure to clean-up
-                       if ( $wikiPage->exists() ) {
-                               $wikiPage->doDeleteArticle( "testing done." );
-                       }
-
-                       $this->assertTrue( $result );
-               } else {
-                       $this->assertTrue( $skip );
-               }
-       }
-
-       /**
         * @test SMWHooks::onBeforePageDisplay
         *
         * @since 1.9
diff --git a/tests/phpunit/includes/hooks/TitleMoveCompleteTest.php 
b/tests/phpunit/includes/hooks/TitleMoveCompleteTest.php
new file mode 100644
index 0000000..780d3da
--- /dev/null
+++ b/tests/phpunit/includes/hooks/TitleMoveCompleteTest.php
@@ -0,0 +1,153 @@
+<?php
+
+namespace SMW\Test;
+
+use SMW\SharedDependencyContainer;
+use SMW\TitleMoveComplete;
+
+use WikiPage;
+
+/**
+ * Tests for the TitleMoveComplete class
+ *
+ * @file
+ *
+ * @license GNU GPL v2+
+ * @since   1.9
+ *
+ * @author mwjames
+ */
+
+/**
+ * @covers \SMW\TitleMoveComplete
+ *
+ * @ingroup Test
+ *
+ * @group SMW
+ * @group SMWExtension
+ */
+class TitleMoveCompleteTest extends SemanticMediaWikiTestCase {
+
+       /**
+        * Returns the name of the class to be tested
+        *
+        * @return string|false
+        */
+       public function getClass() {
+               return '\SMW\TitleMoveComplete';
+       }
+
+       /**
+        * Helper method that returns a TitleMoveComplete object
+        *
+        * @since 1.9
+        *
+        * @return TitleMoveComplete
+        */
+       private function newInstance( $oldTitle = null, $newTitle = null, $user 
= null, $oldId = 0, $newId = 0, $settings = array() ) {
+
+               if ( $oldTitle === null ) {
+                       $oldTitle = $this->newMockBuilder()->newObject( 'Title' 
);
+               }
+
+               if ( $newTitle === null ) {
+                       $newTitle = $this->newMockBuilder()->newObject( 'Title' 
);
+               }
+
+               if ( $user === null ) {
+                       $user = $this->getUser();
+               }
+
+               $container = new SharedDependencyContainer();
+               $container->registerObject( 'Settings', $this->newSettings( 
$settings ) );
+
+               $instance = new TitleMoveComplete( $oldTitle, $newTitle, $user, 
$oldId, $newId );
+               $instance->setDependencyBuilder( $this->newDependencyBuilder( 
$container ) );
+
+               return $instance;
+       }
+
+       /**
+        * @test TitleMoveComplete::__construct
+        *
+        * @since 1.9
+        */
+       public function testConstructor() {
+               $this->assertInstanceOf( $this->getClass(), 
$this->newInstance() );
+       }
+
+       /**
+        * @test TitleMoveComplete::process
+        *
+        * @since 1.9
+        *
+        * @param $setup
+        * @param $expected
+        */
+       public function testProcessOnMock() {
+
+               $settings = array(
+                       'smwgCacheType'             => 'hash',
+                       'smwgAutoRefreshOnPageMove' => true,
+               );
+
+               $instance = $this->newInstance( null, null, null, 0 , 0, 
$settings );
+
+               $container = $instance->getDependencyBuilder()->getContainer();
+               $container->registerObject( 'Store', 
$this->newMockBuilder()->newObject( 'Store' ) );
+
+               $result = $instance->process();
+
+               // Post-process check
+               $this->assertTrue(
+                       $result,
+                       'Asserts that process() always returns true'
+               );
+
+       }
+
+       /**
+        * @test TitleMoveComplete::process
+        *
+        * @note Recycle the old test but for now skip this one
+        *
+        * @since 1.9
+        */
+       public function testProcessOnDB() {
+
+               // For some mysterious reasons this test causes
+               // SMW\Test\ApiAskTest::testExecute ... to fail with 
DBQueryError:
+               // Query: SELECT  o_serialized AS v0  FROM 
unittest_unittest_smw_fpt_mdat
+               // WHERE s_id='5'; it seems that the temp. unittest tables are
+               // being deleted while this test runs
+               $skip = true;
+
+               if ( !$skip && method_exists( 'WikiPage', 'doEditContent' ) ) {
+                       $wikiPage = $this->newPage();
+                       $user = $this->getUser();
+
+                       $title = $wikiPage->getTitle();
+                       $newTitle = $this->getTitle();
+                       $pageid = $wikiPage->getId();
+
+                       $content = \ContentHandler::makeContent(
+                               'testing',
+                               $title,
+                               CONTENT_MODEL_WIKITEXT
+                       );
+                       $wikiPage->doEditContent( $content, "testing", 
EDIT_NEW, false, $user );
+
+               //      $result = SMWHooks::onTitleMoveComplete( $title, 
$newTitle, $user, $pageid, $pageid );
+
+                       // Always make sure to clean-up
+                       if ( $wikiPage->exists() ) {
+                               $wikiPage->doDeleteArticle( "testing done." );
+                       }
+
+                       $this->assertTrue( $result );
+               } else {
+                       $this->assertTrue( $skip );
+               }
+       }
+
+}

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2d8fd6dca1811cb74b41f8278bc7af0e2f262b4f
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/SemanticMediaWiki
Gerrit-Branch: master
Gerrit-Owner: Mwjames <jamesin.hongkon...@gmail.com>

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

Reply via email to