Fix MediaWiki.Commenting.LicenseComment.InvalidLicenseTag errors
[lhc/web/wiklou.git] / tests / phpunit / includes / jobqueue / jobs / CategoryMembershipChangeJobTest.php
1 <?php
2
3 /**
4 * @covers CategoryMembershipChangeJob
5 *
6 * @group JobQueue
7 * @group Database
8 *
9 * @license GPL-2.0-or-later
10 * @author Addshore
11 */
12 class CategoryMembershipChangeJobTest extends MediaWikiTestCase {
13
14 const TITLE_STRING = 'UTCatChangeJobPage';
15
16 /**
17 * @var Title
18 */
19 private $title;
20
21 public function setUp() {
22 parent::setUp();
23 $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
24 $this->setContentLang( 'qqx' );
25 }
26
27 public function addDBDataOnce() {
28 parent::addDBDataOnce();
29 $insertResult = $this->insertPage( self::TITLE_STRING, 'UT Content' );
30 $this->title = $insertResult['title'];
31 }
32
33 private function runJobs() {
34 JobQueueGroup::destroySingletons();
35 $jobs = new RunJobs;
36 $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
37 $jobs->execute();
38 }
39
40 /**
41 * @param string $text new page text
42 *
43 * @return int|null
44 */
45 private function editPageText( $text ) {
46 $page = WikiPage::factory( $this->title );
47 $editResult = $page->doEditContent(
48 ContentHandler::makeContent( $text, $this->title ),
49 __METHOD__
50 );
51 /** @var Revision $revision */
52 $revision = $editResult->value['revision'];
53 $this->runJobs();
54
55 return $revision->getId();
56 }
57
58 /**
59 * @param int $revId
60 *
61 * @return RecentChange|null
62 */
63 private function getCategorizeRecentChangeForRevId( $revId ) {
64 return RecentChange::newFromConds(
65 [
66 'rc_type' => RC_CATEGORIZE,
67 'rc_this_oldid' => $revId,
68 ],
69 __METHOD__
70 );
71 }
72
73 public function testRun_normalCategoryAddedAndRemoved() {
74 $addedRevId = $this->editPageText( '[[Category:Normal]]' );
75 $removedRevId = $this->editPageText( 'Blank' );
76
77 $this->assertEquals(
78 '(recentchanges-page-added-to-category: ' . self::TITLE_STRING . ')',
79 $this->getCategorizeRecentChangeForRevId( $addedRevId )->getAttribute( 'rc_comment' )
80 );
81 $this->assertEquals(
82 '(recentchanges-page-removed-from-category: ' . self::TITLE_STRING . ')',
83 $this->getCategorizeRecentChangeForRevId( $removedRevId )->getAttribute( 'rc_comment' )
84 );
85 }
86
87 }