wiki.techinc.nl/tests/phpunit/includes/TemplateCategoriesTest.php
Brad Jorsch 6f25ee40f1 Add a RefreshLinks job when a template is deleted
When a template is deleted, all pages transcluding it need to be
reparsed so that entries for transcluding pages in the various links
tables due to the transcluded content are properly removed.

Bug: 5382
Change-Id: I838b546caa3f5887e6bd312017c1fa71d3c3463a
2013-11-06 12:56:53 -05:00

96 lines
2.5 KiB
PHP

<?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'
);
}
}