1<?php
2
3use MediaWiki\MediaWikiServices;
4use MediaWiki\Revision\SlotRecord;
5use Psr\Log\NullLogger;
6
7/**
8 * @group Database
9 * @coversDefaultClass ImportableOldRevisionImporter
10 */
11class ImportableOldRevisionImporterTest extends MediaWikiIntegrationTestCase {
12
13	protected function setUp() : void {
14		parent::setUp();
15
16		$this->tablesUsed[] = 'change_tag';
17		$this->tablesUsed[] = 'change_tag_def';
18
19		ChangeTags::defineTag( 'tag1' );
20	}
21
22	public function provideTestCases() {
23		yield [ [] ];
24		yield [ [ "tag1" ] ];
25	}
26
27	/**
28	 * @covers ::import
29	 * @dataProvider provideTestCases
30	 */
31	public function testImport( $expectedTags ) {
32		$services = MediaWikiServices::getInstance();
33
34		$title = Title::newFromText( __CLASS__ . rand() );
35		$revision = new WikiRevision( $services->getMainConfig() );
36		$revision->setTitle( $title );
37		$revision->setTags( $expectedTags );
38		$content = ContentHandler::makeContent( 'dummy edit', $title );
39		$revision->setContent( SlotRecord::MAIN, $content );
40
41		$importer = new ImportableOldRevisionImporter(
42			true,
43			new NullLogger(),
44			$services->getDBLoadBalancer(),
45			$services->getRevisionStore(),
46			$services->getSlotRoleRegistry(),
47			$services->getWikiPageFactory()
48		);
49		$result = $importer->import( $revision );
50		$this->assertTrue( $result );
51
52		$page = WikiPage::factory( $title );
53		$tags = ChangeTags::getTags(
54			$services->getDBLoadBalancer()->getConnection( DB_MASTER ),
55			null,
56			$page->getLatest()
57		);
58		$this->assertSame( $expectedTags, $tags );
59	}
60}
61