2 use MediaWiki\MediaWikiServices
;
5 * @covers RefreshLinksJob
10 * @license GPL-2.0-or-later
13 class RefreshLinksJobTest
extends MediaWikiTestCase
{
15 public function setUp() {
18 $this->tablesUsed
[] = 'page';
19 $this->tablesUsed
[] = 'revision';
21 $this->tablesUsed
[] = 'pagelinks';
22 $this->tablesUsed
[] = 'categorylinks';
27 * @param Content[] $content
31 private function createPage( $name, array $content ) {
32 $title = Title
::makeTitle( $this->getDefaultWikitextNS(), $name );
33 $page = WikiPage
::factory( $title );
35 $updater = $page->newPageUpdater( $this->getTestUser()->getUser() );
37 foreach ( $content as $slot => $cnt ) {
38 $updater->setContent( $slot, $cnt );
41 $updater->saveRevision( CommentStoreComment
::newUnsavedComment( 'Test' ) );
46 // TODO: test multi-page
47 // TODO: test recursive
48 // TODO: test partition
50 public function testRunForSinglePage() {
51 $mainContent = new WikitextContent( 'MAIN [[Kittens]]' );
52 $auxContent = new WikitextContent( 'AUX [[Category:Goats]]' );
53 $page = $this->createPage( __METHOD__
, [ 'main' => $mainContent, 'aux' => $auxContent ] );
56 $parserCache = MediaWikiServices
::getInstance()->getParserCache();
57 $parserCache->deleteOptionsKey( $page );
59 $this->db
->delete( 'pagelinks', '*', __METHOD__
);
60 $this->db
->delete( 'categorylinks', '*', __METHOD__
);
63 $job = new RefreshLinksJob( $page->getTitle(), [ 'parseThreshold' => 0 ] );
67 $options = ParserOptions
::newCanonical( 'canonical' );
68 $out = $parserCache->get( $page, $options );
69 $this->assertNotFalse( $out, 'parser cache entry' );
71 $text = $out->getText();
72 $this->assertContains( 'MAIN', $text );
73 $this->assertContains( 'AUX', $text );
78 [ 'pl_from' => $page->getId() ],
84 [ 'cl_from' => $page->getId() ],