diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:17:42 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2016-05-01 15:17:42 -0400 |
commit | f7d4cf9ed0ae68fec630d14e8f6aade38e49f036 (patch) | |
tree | a730c57badbe0e2f0f064ca2006c82d4b6ed54ea /tests/phpunit/includes/TemplateCategoriesTest.php | |
parent | aee35e4a93d105024bcae947cd8b16c962191f5c (diff) | |
parent | 5d1e7dd0ccda0984ccf3e8e3d0f88ac888b05819 (diff) |
Merge commit '5d1e7'
Diffstat (limited to 'tests/phpunit/includes/TemplateCategoriesTest.php')
-rw-r--r-- | tests/phpunit/includes/TemplateCategoriesTest.php | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/phpunit/includes/TemplateCategoriesTest.php b/tests/phpunit/includes/TemplateCategoriesTest.php new file mode 100644 index 00000000..b0d17267 --- /dev/null +++ b/tests/phpunit/includes/TemplateCategoriesTest.php @@ -0,0 +1,96 @@ +<?php + +/** + * @group Database + */ +require __DIR__ . "/../../../maintenance/runJobs.php"; + +class TemplateCategoriesTest extends MediaWikiLangTestCase { + + /** + * @covers Title::getParentCategories + */ + public function testTemplateCategories() { + $user = new User(); + $user->mRights = array( 'createpage', 'edit', 'purge', 'delete' ); + + $title = Title::newFromText( "Categorized from template" ); + $page = WikiPage::factory( $title ); + $page->doEditContent( + new WikitextContent( '{{Categorising template}}' ), + 'Create a page with a template', + 0, + false, + $user + ); + + $this->assertEquals( + array(), + $title->getParentCategories(), + 'Verify that the category doesn\'t contain the page before the template is created' + ); + + // Create template + $template = WikiPage::factory( Title::newFromText( 'Template:Categorising template' ) ); + $template->doEditContent( + new WikitextContent( '[[Category:Solved bugs]]' ), + 'Add a category through a template', + 0, + false, + $user + ); + + // Run the job queue + JobQueueGroup::destroySingletons(); + $jobs = new RunJobs; + $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null ); + $jobs->execute(); + + // Make sure page is in the category + $this->assertEquals( + array( 'Category:Solved_bugs' => $title->getPrefixedText() ), + $title->getParentCategories(), + 'Verify that the page is in the category after the template is created' + ); + + // Edit the template + $template->doEditContent( + new WikitextContent( '[[Category:Solved bugs 2]]' ), + 'Change the category added by the template', + 0, + false, + $user + ); + + // Run the job queue + JobQueueGroup::destroySingletons(); + $jobs = new RunJobs; + $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null ); + $jobs->execute(); + + // Make sure page is in the right category + $this->assertEquals( + array( 'Category:Solved_bugs_2' => $title->getPrefixedText() ), + $title->getParentCategories(), + 'Verify that the page is in the right category after the template is edited' + ); + + // Now delete the template + $error = ''; + $template->doDeleteArticleReal( 'Delete the template', false, 0, true, $error, $user ); + + // Run the job queue + JobQueueGroup::destroySingletons(); + $jobs = new RunJobs; + $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null ); + $jobs->execute(); + + // Make sure the page is no longer in the category + $this->assertEquals( + array(), + $title->getParentCategories(), + 'Verify that the page is no longer in the category after template deletion' + ); + + } +} |