diff options
author | Kai_WMDE <kai.nissen@wikimedia.de> | 2015-05-17 18:09:59 +0200 |
---|---|---|
committer | Kai_WMDE <kai.nissen@wikimedia.de> | 2015-08-13 17:58:06 +0200 |
commit | f6879ea16edf008eb012bd4dbe133e2ba4b9338f (patch) | |
tree | e58cf2cc7f75f15576c5db4f58e1b2f55b5dce2f /tests/phpunit/includes/deferred | |
parent | 0a9ee5d9bf0047ec65c29ee35321d96191ecbff5 (diff) | |
download | mediawikicore-f6879ea16edf008eb012bd4dbe133e2ba4b9338f.tar.gz mediawikicore-f6879ea16edf008eb012bd4dbe133e2ba4b9338f.zip |
Enable users to watch category membership changes
Bug: T9148
Change-Id: I5a89d8f19804b1120f4c755d834e2da6ca12ceae
Diffstat (limited to 'tests/phpunit/includes/deferred')
-rw-r--r-- | tests/phpunit/includes/deferred/LinksUpdateTest.php | 86 |
1 files changed, 85 insertions, 1 deletions
diff --git a/tests/phpunit/includes/deferred/LinksUpdateTest.php b/tests/phpunit/includes/deferred/LinksUpdateTest.php index 02f6b2ab2d5a..efbfe6f6a9e8 100644 --- a/tests/phpunit/includes/deferred/LinksUpdateTest.php +++ b/tests/phpunit/includes/deferred/LinksUpdateTest.php @@ -19,7 +19,8 @@ class LinksUpdateTest extends MediaWikiTestCase { 'externallinks', 'imagelinks', 'templatelinks', - 'iwlinks' + 'iwlinks', + 'recentchanges', ) ); } @@ -41,6 +42,12 @@ class LinksUpdateTest extends MediaWikiTestCase { ); } + public function addDBData() { + $this->insertPage( 'Testing' ); + $this->insertPage( 'Some_other_page' ); + $this->insertPage( 'Template:TestingTemplate' ); + } + protected function makeTitleAndParserOutput( $name, $id ) { $t = Title::newFromText( $name ); $t->mArticleID = $id; # XXX: this is fugly @@ -133,6 +140,61 @@ class LinksUpdateTest extends MediaWikiTestCase { ) ); } + public function testOnAddingAndRemovingCategory_recentChangesRowIsAdded() { + $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' ); + + $title = Title::newFromText( 'Testing' ); + $wikiPage = new WikiPage( $title ); + $wikiPage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' ); + + $this->assertRecentChangeByCategorization( + $title, + $wikiPage->getParserOutput( new ParserOptions() ), + Title::newFromText( 'Category:Foo' ), + array( array( 'Foo', '[[:Testing]] added to category' ) ) + ); + + $wikiPage->doEditContent( new WikitextContent( '[[Category:Bar]]' ), 'added category' ); + $this->assertRecentChangeByCategorization( + $title, + $wikiPage->getParserOutput( new ParserOptions() ), + Title::newFromText( 'Category:Foo' ), + array( + array( 'Foo', '[[:Testing]] added to category' ), + array( 'Foo', '[[:Testing]] removed from category' ), + ) + ); + + $this->assertRecentChangeByCategorization( + $title, + $wikiPage->getParserOutput( new ParserOptions() ), + Title::newFromText( 'Category:Bar' ), + array( + array( 'Bar', '[[:Testing]] added to category' ), + ) + ); + } + + public function testOnAddingAndRemovingCategoryToTemplates_embeddingPagesAreIgnored() { + $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' ); + + $templateTitle = Title::newFromText( 'Template:TestingTemplate' ); + $templatePage = new WikiPage( $templateTitle ); + + $wikiPage = new WikiPage( Title::newFromText( 'Testing' ) ); + $wikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' ); + $otherWikiPage = new WikiPage( Title::newFromText( 'Some_other_page' ) ); + $otherWikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' ); + $templatePage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' ); + + $this->assertRecentChangeByCategorization( + $templateTitle, + $templatePage->getParserOutput( new ParserOptions() ), + Title::newFromText( 'Foo' ), + array( array( 'Foo', '[[:Template:TestingTemplate]] and 2 pages added to category' ) ) + ); + } + /** * @covers ParserOutput::addInterwikiLink */ @@ -263,4 +325,26 @@ class LinksUpdateTest extends MediaWikiTestCase { $this->assertSelect( $table, $fields, $condition, $expectedRows ); return $update; } + + protected function assertRecentChangeByCategorization( + Title $pageTitle, ParserOutput $parserOutput, Title $categoryTitle, $expectedRows + ) { + $update = new LinksUpdate( $pageTitle, $parserOutput ); + $revision = Revision::newFromTitle( $pageTitle ); + $update->setRevision( $revision ); + $update->beginTransaction(); + $update->doUpdate(); + $update->commitTransaction(); + + $this->assertSelect( + 'recentchanges', + 'rc_title, rc_comment', + array( + 'rc_type' => RC_CATEGORIZE, + 'rc_namespace' => NS_CATEGORY, + 'rc_title' => $categoryTitle->getDBkey() + ), + $expectedRows + ); + } } |