Merge "DatabaseMssql: Don't duplicate body of makeList()"
[mediawiki.git] / tests / phpunit / includes / TemplateCategoriesTest.php
blobb0d17267a056efe1ff34591ab966df933dbf02ab
1 <?php
3 /**
4 * @group Database
5 */
6 require __DIR__ . "/../../../maintenance/runJobs.php";
8 class TemplateCategoriesTest extends MediaWikiLangTestCase {
10 /**
11 * @covers Title::getParentCategories
13 public function testTemplateCategories() {
14 $user = new User();
15 $user->mRights = array( 'createpage', 'edit', 'purge', 'delete' );
17 $title = Title::newFromText( "Categorized from template" );
18 $page = WikiPage::factory( $title );
19 $page->doEditContent(
20 new WikitextContent( '{{Categorising template}}' ),
21 'Create a page with a template',
23 false,
24 $user
27 $this->assertEquals(
28 array(),
29 $title->getParentCategories(),
30 'Verify that the category doesn\'t contain the page before the template is created'
33 // Create template
34 $template = WikiPage::factory( Title::newFromText( 'Template:Categorising template' ) );
35 $template->doEditContent(
36 new WikitextContent( '[[Category:Solved bugs]]' ),
37 'Add a category through a template',
39 false,
40 $user
43 // Run the job queue
44 JobQueueGroup::destroySingletons();
45 $jobs = new RunJobs;
46 $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
47 $jobs->execute();
49 // Make sure page is in the category
50 $this->assertEquals(
51 array( 'Category:Solved_bugs' => $title->getPrefixedText() ),
52 $title->getParentCategories(),
53 'Verify that the page is in the category after the template is created'
56 // Edit the template
57 $template->doEditContent(
58 new WikitextContent( '[[Category:Solved bugs 2]]' ),
59 'Change the category added by the template',
61 false,
62 $user
65 // Run the job queue
66 JobQueueGroup::destroySingletons();
67 $jobs = new RunJobs;
68 $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
69 $jobs->execute();
71 // Make sure page is in the right category
72 $this->assertEquals(
73 array( 'Category:Solved_bugs_2' => $title->getPrefixedText() ),
74 $title->getParentCategories(),
75 'Verify that the page is in the right category after the template is edited'
78 // Now delete the template
79 $error = '';
80 $template->doDeleteArticleReal( 'Delete the template', false, 0, true, $error, $user );
82 // Run the job queue
83 JobQueueGroup::destroySingletons();
84 $jobs = new RunJobs;
85 $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
86 $jobs->execute();
88 // Make sure the page is no longer in the category
89 $this->assertEquals(
90 array(),
91 $title->getParentCategories(),
92 'Verify that the page is no longer in the category after template deletion'