MediaWiki  1.23.14
TemplateCategoriesTest.php
Go to the documentation of this file.
1 <?php
2 
6 require __DIR__ . "/../../../maintenance/runJobs.php";
7 
9 
13  public function testTemplateCategories() {
14  $user = new User();
15  $user->mRights = array( '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  array(),
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
45  $jobs = new RunJobs;
46  $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
47  $jobs->execute();
48 
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'
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
67  $jobs = new RunJobs;
68  $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
69  $jobs->execute();
70 
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'
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
84  $jobs = new RunJobs;
85  $jobs->loadParamsAndArgs( null, array( 'quiet' => true ), null );
86  $jobs->execute();
87 
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'
93  );
94 
95  }
96 }
RunJobs
Maintenance script that runs pending jobs.
Definition: runJobs.php:31
Title\newFromText
static newFromText( $text, $defaultNamespace=NS_MAIN)
Create a new Title from text, such as what one would find in a link.
Definition: Title.php:189
php
skin txt MediaWiki includes four core it has been set as the default in MediaWiki since the replacing Monobook it had been been the default skin since before being replaced by Vector largely rewritten in while keeping its appearance Several legacy skins were removed in the as the burden of supporting them became too heavy to bear Those in etc for skin dependent CSS etc for skin dependent JavaScript These can also be customised on a per user by etc This feature has led to a wide variety of user styles becoming that gallery is a good place to ending in php
Definition: skin.txt:62
TemplateCategoriesTest
@group Database
Definition: TemplateCategoriesTest.php:8
Maintenance\loadParamsAndArgs
loadParamsAndArgs( $self=null, $opts=null, $args=null)
Process command line arguments $mOptions becomes an array with keys set to the option names $mArgs be...
Definition: Maintenance.php:567
JobQueueGroup\destroySingletons
static destroySingletons()
Destroy the singleton instances.
Definition: JobQueueGroup.php:75
WikiPage\factory
static factory(Title $title)
Create a WikiPage object of the appropriate class for the given title.
Definition: WikiPage.php:103
array
the array() calling protocol came about after MediaWiki 1.4rc1.
List of Api Query prop modules.
WikitextContent
Content object for wiki text pages.
Definition: WikitextContent.php:33
TemplateCategoriesTest\testTemplateCategories
testTemplateCategories()
@covers Title::getParentCategories
Definition: TemplateCategoriesTest.php:13
$title
presenting them properly to the user as errors is done by the caller $title
Definition: hooks.txt:1324
MediaWikiLangTestCase
Base class that store and restore the Language objects.
Definition: MediaWikiLangTestCase.php:6
$user
please add to it if you re going to add events to the MediaWiki code where normally authentication against an external auth plugin would be creating a account $user
Definition: hooks.txt:237
User
User
Definition: All_system_messages.txt:425
$error
usually copyright or history_copyright This message must be in HTML not wikitext $subpages will be ignored and the rest of subPageSubtitle() will run. 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink' whether MediaWiki currently thinks this is a CSS JS page Hooks may change this value to override the return value of Title::isCssOrJsPage(). 'TitleIsAlwaysKnown' whether MediaWiki currently thinks this page is known isMovable() always returns false. $title whether MediaWiki currently thinks this page is movable Hooks may change this value to override the return value of Title::isMovable(). 'TitleIsWikitextPage' whether MediaWiki currently thinks this is a wikitext page Hooks may change this value to override the return value of Title::isWikitextPage() 'TitleMove' use UploadVerification and UploadVerifyFile instead where the first element is the message key and the remaining elements are used as parameters to the message based on mime etc Preferred in most cases over UploadVerification object with all info about the upload string as detected by MediaWiki Handlers will typically only apply for specific mime types object & $error
Definition: hooks.txt:2584