Merge "tests/api: Use MediaWikiIntegrationTestCase::editPage for edits"

This commit is contained in:
jenkins-bot 2022-08-19 16:35:40 +00:00 committed by Gerrit Code Review
commit 706d479075
10 changed files with 111 additions and 73 deletions

View file

@ -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(

View file

@ -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',

View file

@ -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' ) );

View file

@ -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' ]

View file

@ -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() {

View file

@ -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( [

View file

@ -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'] );

View file

@ -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
);
}

View file

@ -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' ) );

View file

@ -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()
);
}