4 * @covers CategoryMembershipChangeJob
12 class CategoryMembershipChangeJobTest
extends MediaWikiTestCase
{
14 const TITLE_STRING
= 'UTCatChangeJobPage';
21 public function setUp() {
23 $this->setMwGlobals( 'wgRCWatchCategoryMembership', true );
26 public function addDBData() {
28 $insertResult = $this->insertPage( self
::TITLE_STRING
, 'UT Content' );
29 $this->title
= $insertResult['title'];
32 private function runJobs() {
33 JobQueueGroup
::destroySingletons();
35 $jobs->loadParamsAndArgs( null, [ 'quiet' => true ], null );
40 * @param string $text new page text
44 private function editPageText( $text ) {
45 $page = WikiPage
::factory( $this->title
);
46 $editResult = $page->doEditContent(
47 ContentHandler
::makeContent( $text, $this->title
),
50 /** @var Revision $revision */
51 $revision = $editResult->value
['revision'];
54 return $revision->getId();
60 * @return RecentChange|null
62 private function getCategorizeRecentChangeForRevId( $revId ) {
63 return RecentChange
::newFromConds(
65 'rc_type' => RC_CATEGORIZE
,
66 'rc_this_oldid' => $revId,
72 public function testRun_normalCategoryAddedAndRemoved() {
73 $addedRevId = $this->editPageText( '[[Category:Normal]]' );
74 $removedRevId = $this->editPageText( 'Blank' );
77 '[[:' . self
::TITLE_STRING
. ']] added to category',
78 $this->getCategorizeRecentChangeForRevId( $addedRevId )->getAttribute( 'rc_comment' )
81 '[[:' . self
::TITLE_STRING
. ']] removed from category',
82 $this->getCategorizeRecentChangeForRevId( $removedRevId )->getAttribute( 'rc_comment' )