Merge "tests/api: Use MediaWikiIntegrationTestCase::editPage for edits"
This commit is contained in:
commit
706d479075
10 changed files with 111 additions and 73 deletions
|
|
@ -1,11 +1,13 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\Linker\LinkTarget;
|
||||
use MediaWiki\Logger\LegacyLogger;
|
||||
use MediaWiki\Logger\LegacySpi;
|
||||
use MediaWiki\Logger\LogCapturingSpi;
|
||||
use MediaWiki\Logger\LoggerFactory;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Page\PageIdentity;
|
||||
use MediaWiki\Page\ProperPageIdentity;
|
||||
use MediaWiki\Permissions\Authority;
|
||||
use MediaWiki\Permissions\UltimateAuthority;
|
||||
|
|
@ -2528,7 +2530,7 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
|
||||
/**
|
||||
* Edits or creates a page/revision
|
||||
* @param string|Title|WikiPage $page the page to edit
|
||||
* @param string|PageIdentity|LinkTarget|WikiPage $page the page to edit
|
||||
* @param string|Content $content the new content of the page
|
||||
* @param string $summary Optional summary string for the revision
|
||||
* @param int $defaultNs Optional namespace id
|
||||
|
|
@ -2551,14 +2553,18 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
' method should return true. Use @group Database or $this->tablesUsed.' );
|
||||
}
|
||||
|
||||
$services = $this->getServiceContainer();
|
||||
if ( $page instanceof WikiPage ) {
|
||||
$title = $page->getTitle();
|
||||
} elseif ( $page instanceof Title ) {
|
||||
$title = $page;
|
||||
$page = WikiPage::factory( $title );
|
||||
} elseif ( $page instanceof PageIdentity ) {
|
||||
$page = $services->getWikiPageFactory()->newFromTitle( $page );
|
||||
$title = $page->getTitle();
|
||||
} elseif ( $page instanceof LinkTarget ) {
|
||||
$page = $services->getWikiPageFactory()->newFromLinkTarget( $page );
|
||||
$title = $page->getTitle();
|
||||
} else {
|
||||
$title = Title::newFromText( $page, $defaultNs );
|
||||
$page = WikiPage::factory( $title );
|
||||
$title = $services->getTitleFactory()->newFromText( $page, $defaultNs );
|
||||
$page = $services->getWikiPageFactory()->newFromTitle( $title );
|
||||
}
|
||||
|
||||
if ( $performer === null ) {
|
||||
|
|
@ -2566,7 +2572,9 @@ abstract class MediaWikiIntegrationTestCase extends PHPUnit\Framework\TestCase {
|
|||
}
|
||||
|
||||
if ( is_string( $content ) ) {
|
||||
$content = ContentHandler::makeContent( $content, $title );
|
||||
$content = $services->getContentHandlerFactory()
|
||||
->getContentHandler( $title->getContentModel() )
|
||||
->unserializeContent( $content );
|
||||
}
|
||||
|
||||
return $page->doUserEditContent(
|
||||
|
|
|
|||
|
|
@ -219,11 +219,12 @@ class ApiChangeContentModelTest extends ApiTestCase {
|
|||
$title = Title::newFromText( 'Dummy:NoDirectEditing' );
|
||||
|
||||
$dummyContent = ContentHandler::getForModelID( 'testing' )->makeEmptyContent();
|
||||
WikiPage::factory( $title )->doUserEditContent(
|
||||
$this->editPage(
|
||||
$title,
|
||||
$dummyContent,
|
||||
$this->getTestSysop()->getUser(),
|
||||
'EditSummaryForThisTest',
|
||||
EDIT_NEW | EDIT_SUPPRESS_RC
|
||||
NS_MAIN,
|
||||
$this->getTestSysop()->getUser()
|
||||
);
|
||||
$this->assertSame(
|
||||
'testing',
|
||||
|
|
|
|||
|
|
@ -14,13 +14,17 @@ class ApiComparePagesTest extends ApiTestCase {
|
|||
protected static $repl = [];
|
||||
|
||||
protected function addPage( $page, $text, $model = CONTENT_MODEL_WIKITEXT ) {
|
||||
$title = Title::newFromText( 'ApiComparePagesTest ' . $page );
|
||||
$content = ContentHandler::makeContent( $text, $title, $model );
|
||||
|
||||
$page = WikiPage::factory( $title );
|
||||
$title = Title::makeTitle( NS_MAIN, 'ApiComparePagesTest ' . $page );
|
||||
$content = $this->getServiceContainer()->getContentHandlerFactory()
|
||||
->getContentHandler( $model )
|
||||
->unserializeContent( $text );
|
||||
$user = static::getTestSysop()->getUser();
|
||||
$status = $page->doUserEditContent(
|
||||
$content, $user, 'Test for ApiComparePagesTest: ' . $text
|
||||
$status = $this->editPage(
|
||||
$title,
|
||||
$content,
|
||||
'Test for ApiComparePagesTest: ' . $text,
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
if ( !$status->isOK() ) {
|
||||
$this->fail( "Failed to create $title: " . $status->getWikiText( false, false, 'en' ) );
|
||||
|
|
|
|||
|
|
@ -242,12 +242,23 @@ class ApiStashEditTest extends ApiTestCase {
|
|||
|
||||
public function testMidEditContentModelMismatch() {
|
||||
$name = ucfirst( __FUNCTION__ );
|
||||
$page = WikiPage::factory( Title::makeTitle( NS_MAIN, $name ) );
|
||||
|
||||
$title = Title::makeTitle( NS_MAIN, $name );
|
||||
$content = new CssContent( 'Css' );
|
||||
$user = $this->getTestSysop()->getUser();
|
||||
$revRecord = $page->doUserEditContent( $content, $user, '' )->value['revision-record'];
|
||||
$page->doUserEditContent( new WikitextContent( 'Text' ), $user, '' );
|
||||
$revRecord = $this->editPage(
|
||||
$title,
|
||||
$content,
|
||||
'',
|
||||
NS_MAIN,
|
||||
$user
|
||||
)->value['revision-record'];
|
||||
$this->editPage(
|
||||
$title,
|
||||
new WikitextContent( 'Text' ),
|
||||
'',
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
|
||||
$this->setExpectedApiException(
|
||||
[ 'apierror-contentmodel-mismatch', 'wikitext', 'css' ]
|
||||
|
|
|
|||
|
|
@ -11,16 +11,28 @@ class ApiFormatXmlTest extends ApiFormatTestBase {
|
|||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
$page = WikiPage::factory( Title::newFromText( 'MediaWiki:ApiFormatXmlTest.xsl' ) );
|
||||
$user = self::getTestSysop()->getUser();
|
||||
$page->doUserEditContent( new WikitextContent(
|
||||
'<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" />'
|
||||
), $user, 'Summary' );
|
||||
// phpcs:enable
|
||||
$page = WikiPage::factory( Title::newFromText( 'MediaWiki:ApiFormatXmlTest' ) );
|
||||
$page->doUserEditContent( new WikitextContent( 'Bogus' ), $user, 'Summary' );
|
||||
$page = WikiPage::factory( Title::newFromText( 'ApiFormatXmlTest' ) );
|
||||
$page->doUserEditContent( new WikitextContent( 'Bogus' ), $user, 'Summary' );
|
||||
$this->editPage(
|
||||
Title::makeTitle( NS_MEDIAWIKI, 'ApiFormatXmlTest.xsl' ),
|
||||
'<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" />',
|
||||
'Summary',
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
$this->editPage(
|
||||
Title::makeTitle( NS_MEDIAWIKI, 'ApiFormatXmlTest' ),
|
||||
'Bogus',
|
||||
'Summary',
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
$this->editPage(
|
||||
Title::makeTitle( NS_MAIN, 'ApiFormatXmlTest' ),
|
||||
'Bogus',
|
||||
'Summary',
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideGeneralEncoding() {
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@ class ApiQueryAllPagesTest extends ApiTestCase {
|
|||
* in wrong search results
|
||||
*/
|
||||
public function testPrefixNormalizationSearchBug() {
|
||||
$title = Title::newFromText( 'Category:Template:xyz' );
|
||||
$page = WikiPage::factory( $title );
|
||||
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( 'Some text', $page->getTitle() ),
|
||||
$this->getTestSysop()->getUser(),
|
||||
'inserting content'
|
||||
$title = Title::makeTitle( NS_CATEGORY, 'Template:xyz' );
|
||||
$this->editPage(
|
||||
$title,
|
||||
'Some text',
|
||||
'inserting content',
|
||||
NS_MAIN,
|
||||
$this->getTestSysop()->getUser()
|
||||
);
|
||||
|
||||
$result = $this->doApiRequest( [
|
||||
|
|
|
|||
|
|
@ -17,19 +17,20 @@ class ApiQueryAllRevisionsTest extends ApiTestCase {
|
|||
* @group medium
|
||||
*/
|
||||
public function testContentComesWithContentModelAndFormat() {
|
||||
$pageName = 'Help:' . __METHOD__;
|
||||
$title = Title::newFromText( $pageName );
|
||||
$page = WikiPage::factory( $title );
|
||||
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( 'Some text', $page->getTitle() ),
|
||||
$this->getTestSysop()->getUser(),
|
||||
'inserting content'
|
||||
$title = Title::makeTitle( NS_HELP, 'TestContentComesWithContentModelAndFormat' );
|
||||
$this->editPage(
|
||||
$title,
|
||||
'Some text',
|
||||
'inserting content',
|
||||
NS_MAIN,
|
||||
$this->getTestSysop()->getUser()
|
||||
);
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( 'Some other text', $page->getTitle() ),
|
||||
$this->getTestSysop()->getUser(),
|
||||
'adding revision'
|
||||
$this->editPage(
|
||||
$title,
|
||||
'Some other text',
|
||||
'adding revision',
|
||||
NS_MAIN,
|
||||
$this->getTestSysop()->getUser()
|
||||
);
|
||||
|
||||
$apiResult = $this->doApiRequest( [
|
||||
|
|
@ -44,7 +45,7 @@ class ApiQueryAllRevisionsTest extends ApiTestCase {
|
|||
$this->assertArrayHasKey( 'allrevisions', $apiResult[0]['query'] );
|
||||
$this->assertArrayHasKey( 0, $apiResult[0]['query']['allrevisions'] );
|
||||
$this->assertArrayHasKey( 'title', $apiResult[0]['query']['allrevisions'][0] );
|
||||
$this->assertSame( $pageName, $apiResult[0]['query']['allrevisions'][0]['title'] );
|
||||
$this->assertSame( $title->getPrefixedText(), $apiResult[0]['query']['allrevisions'][0]['title'] );
|
||||
$this->assertArrayHasKey( 'revisions', $apiResult[0]['query']['allrevisions'][0] );
|
||||
$this->assertCount( 2, $apiResult[0]['query']['allrevisions'][0]['revisions'] );
|
||||
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@ class ApiQueryRecentChangesIntegrationTest extends ApiTestCase {
|
|||
private function doPageEdit( User $user, LinkTarget $target, $summary ) {
|
||||
static $i = 0;
|
||||
|
||||
$title = Title::newFromLinkTarget( $target );
|
||||
$page = WikiPage::factory( $title );
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( __CLASS__ . $i++, $title ),
|
||||
$user,
|
||||
$summary
|
||||
$this->editPage(
|
||||
$target,
|
||||
__CLASS__ . $i++,
|
||||
$summary,
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,14 +18,15 @@ class ApiQueryUserContribsTest extends ApiTestCase {
|
|||
User::newFromName( 'IW>' . __CLASS__, false ),
|
||||
];
|
||||
|
||||
$title = Title::newFromText( __CLASS__ );
|
||||
$page = WikiPage::factory( $title );
|
||||
$title = Title::makeTitle( NS_MAIN, 'ApiQueryUserContribsTest' );
|
||||
for ( $i = 0; $i < 3; $i++ ) {
|
||||
foreach ( array_reverse( $users ) as $user ) {
|
||||
$status = $page->doUserEditContent(
|
||||
ContentHandler::makeContent( "Test revision $user #$i", $title ),
|
||||
$user,
|
||||
'Test edit'
|
||||
$status = $this->editPage(
|
||||
$title,
|
||||
"Test revision $user #$i",
|
||||
'Test edit',
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
if ( !$status->isOK() ) {
|
||||
$this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
|
|||
}
|
||||
|
||||
private function doPageEdit( User $user, LinkTarget $target, $content, $summary ) {
|
||||
$title = Title::newFromLinkTarget( $target );
|
||||
$page = WikiPage::factory( $title );
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( $content, $title ),
|
||||
$user,
|
||||
$summary
|
||||
$this->editPage(
|
||||
$target,
|
||||
$content,
|
||||
$summary,
|
||||
NS_MAIN,
|
||||
$user
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -62,12 +62,12 @@ class ApiQueryWatchlistIntegrationTest extends ApiTestCase {
|
|||
}
|
||||
|
||||
private function doAnonPageEdit( LinkTarget $target, $content, $summary ) {
|
||||
$title = Title::newFromLinkTarget( $target );
|
||||
$page = WikiPage::factory( $title );
|
||||
$page->doUserEditContent(
|
||||
ContentHandler::makeContent( $content, $title ),
|
||||
User::newFromId( 0 ),
|
||||
$summary
|
||||
$this->editPage(
|
||||
$target,
|
||||
$content,
|
||||
$summary,
|
||||
NS_MAIN,
|
||||
$this->getServiceContainer()->getUserFactory()->newAnonymous()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue