Merge "Don't fallback from uk to ru"
[lhc/web/wiklou.git] / tests / phpunit / includes / TemplateCategoriesTest.php
1 <?php
2
3 /**
4 * @group Database
5 */
6 require __DIR__ . "/../../../maintenance/runJobs.php";
7
8 class TemplateCategoriesTest extends MediaWikiLangTestCase {
9
10 /**
11 * @covers Title::getParentCategories
12 */
13 public function testTemplateCategories() {
14 $user = new User();
15 $user->mRights = [ 'createpage', 'edit', 'purge', 'delete' ];
16
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',
22 0,
23 false,
24 $user
25 );
26
27 $this->assertEquals(
28 [],
29 $title->getParentCategories(),
30 'Verify that the category doesn\'t contain the page before the template is created'
31 );
32
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',
38 0,
39 false,
40 $user
41 );
42
43 // Run the job queue
44 JobQueueGroup::destroySingletons();
45 $jobs = new RunJobs;
46 $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
47 $jobs->execute();
48
49 // Make sure page is in the category
50 $this->assertEquals(
51 [ 'Category:Solved_bugs' => $title->getPrefixedText() ],
52 $title->getParentCategories(),
53 'Verify that the page is in the category after the template is created'
54 );
55
56 // Edit the template
57 $template->doEditContent(
58 new WikitextContent( '[[Category:Solved bugs 2]]' ),
59 'Change the category added by the template',
60 0,
61 false,
62 $user
63 );
64
65 // Run the job queue
66 JobQueueGroup::destroySingletons();
67 $jobs = new RunJobs;
68 $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
69 $jobs->execute();
70
71 // Make sure page is in the right category
72 $this->assertEquals(
73 [ 'Category:Solved_bugs_2' => $title->getPrefixedText() ],
74 $title->getParentCategories(),
75 'Verify that the page is in the right category after the template is edited'
76 );
77
78 // Now delete the template
79 $error = '';
80 $template->doDeleteArticleReal( 'Delete the template', false, 0, true, $error, $user );
81
82 // Run the job queue
83 JobQueueGroup::destroySingletons();
84 $jobs = new RunJobs;
85 $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
86 $jobs->execute();
87
88 // Make sure the page is no longer in the category
89 $this->assertEquals(
90 [],
91 $title->getParentCategories(),
92 'Verify that the page is no longer in the category after template deletion'
93 );
94 }
95 }