use MediaWiki\Edit\PreparedEdit;
use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\SlotRecord;
use MediaWiki\Storage\RevisionSlotsUpdate;
use PHPUnit\Framework\MockObject\MockObject;
use Wikimedia\TestingAccessWrapper;
}
$updater->saveRevision( CommentStoreComment::newUnsavedComment( "testing" ) );
+ if ( !$updater->wasSuccessful() ) {
+ $this->fail( $updater->getStatus()->getWikiText() );
+ }
return $page;
}
);
$logId = $status->getValue();
$actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' );
+ $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'log_comment' );
$this->assertSelect(
- [ 'logging' ] + $actorQuery['tables'], /* table */
+ [ 'logging' ] + $actorQuery['tables'] + $commentQuery['tables'], /* table */
[
'log_type',
'log_action',
- 'log_comment',
+ 'log_comment' => $commentQuery['fields']['log_comment_text'],
'log_user' => $actorQuery['fields']['log_user'],
'log_user_text' => $actorQuery['fields']['log_user_text'],
'log_namespace',
$page->getTitle()->getDBkey(),
] ],
[],
- $actorQuery['joins']
+ $actorQuery['joins'] + $commentQuery['joins']
);
}
);
$logId = $status->getValue();
$actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' );
+ $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'log_comment' );
$this->assertSelect(
- [ 'logging' ] + $actorQuery['tables'], /* table */
+ [ 'logging' ] + $actorQuery['tables'] + $commentQuery['tables'], /* table */
[
'log_type',
'log_action',
- 'log_comment',
+ 'log_comment' => $commentQuery['fields']['log_comment_text'],
'log_user' => $actorQuery['fields']['log_user'],
'log_user_text' => $actorQuery['fields']['log_user_text'],
'log_namespace',
$page->getTitle()->getDBkey(),
] ],
[],
- $actorQuery['joins']
+ $actorQuery['joins'] + $commentQuery['joins']
);
}
);
$logId = $status->getValue();
$actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' );
+ $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'log_comment' );
$this->assertSelect(
- [ 'logging' ] + $actorQuery['tables'], /* table */
+ [ 'logging' ] + $actorQuery['tables'] + $commentQuery['tables'], /* table */
[
'log_type',
'log_action',
- 'log_comment',
+ 'log_comment' => $commentQuery['fields']['log_comment_text'],
'log_user' => $actorQuery['fields']['log_user'],
'log_user_text' => $actorQuery['fields']['log_user_text'],
'log_namespace',
$page->getTitle()->getDBkey(),
] ],
[],
- $actorQuery['joins']
+ $actorQuery['joins'] + $commentQuery['joins']
);
$this->assertNull(
"#REDIRECT [[hello world]]",
"Hello world"
],
+ // The below added to protect against Media namespace
+ // redirects which throw a fatal: (T203942)
+ [
+ 'WikiPageTest_testGetRedirectTarget_3',
+ CONTENT_MODEL_WIKITEXT,
+ "#REDIRECT [[Media:hello_world]]",
+ "File:Hello world"
+ ],
+ // Test fragments longer than 255 bytes (T207876)
+ [
+ 'WikiPageTest_testGetRedirectTarget_4',
+ CONTENT_MODEL_WIKITEXT,
+ // phpcs:ignore Generic.Files.LineLength
+ '#REDIRECT [[Foobar#🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴]]',
+ // phpcs:ignore Generic.Files.LineLength
+ 'Foobar#🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴🏴...'
+ ]
];
}
# now, test the actual redirect
$t = $page->getRedirectTarget();
- $this->assertEquals( $target, is_null( $t ) ? null : $t->getPrefixedText() );
+ $this->assertEquals( $target, is_null( $t ) ? null : $t->getFullText() );
}
/**
);
// TODO: MCR: assert origin once we write slot data
- // $mainSlot = $page->getRevision()->getRevisionRecord()->getSlot( 'main' );
+ // $mainSlot = $page->getRevision()->getRevisionRecord()->getSlot( SlotRecord::MAIN );
// $this->assertTrue( $mainSlot->isInherited(), 'isInherited' );
// $this->assertSame( $rev2->getId(), $mainSlot->getOrigin(), 'getOrigin' );
}
wfTimestamp( TS_UNIX, $initialRevision->getTimestamp() ) - 1
);
- $olderRevison = new Revision(
+ $olderRevision = new Revision(
[
'id' => 9989,
'page' => $page->getId(),
]
);
- $result = $page->updateIfNewerOn( $this->db, $olderRevison );
+ $result = $page->updateIfNewerOn( $this->db, $olderRevision );
$this->assertFalse( $result );
}
// Make sure the log entry looks good
// log_params is not checked here
$actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' );
+ $commentQuery = MediaWikiServices::getInstance()->getCommentStore()->getJoin( 'log_comment' );
$this->assertSelect(
- [ 'logging' ] + $actorQuery['tables'],
+ [ 'logging' ] + $actorQuery['tables'] + $commentQuery['tables'],
[
- 'log_comment',
+ 'log_comment' => $commentQuery['fields']['log_comment_text'],
'log_user' => $actorQuery['fields']['log_user'],
'log_user_text' => $actorQuery['fields']['log_user_text'],
'log_namespace',
$page->getTitle()->getDBkey(),
] ],
[],
- $actorQuery['joins']
+ $actorQuery['joins'] + $commentQuery['joins']
);
}
// provide context, so the cache can be kept in place
$slotsUpdate = new revisionSlotsUpdate();
- $slotsUpdate->modifyContent( 'main', $content );
+ $slotsUpdate->modifyContent( SlotRecord::MAIN, $content );
$updater = $page->newPageUpdater( $user, $slotsUpdate );
- $updater->setContent( 'main', $content );
+ $updater->setContent( SlotRecord::MAIN, $content );
$revision = $updater->saveRevision(
CommentStoreComment::newUnsavedComment( 'test' ),
EDIT_NEW
$user = $revision->getUser();
$slotsUpdate = new RevisionSlotsUpdate();
- $slotsUpdate->modifyContent( 'main', new WikitextContent( 'Hello World' ) );
+ $slotsUpdate->modifyContent( SlotRecord::MAIN, new WikitextContent( 'Hello World' ) );
// get a virgin updater
$updater1 = $page->getDerivedDataUpdater( $user );
$this->assertSame( $updater1, $page->getDerivedDataUpdater( $user, $revision ) );
$slotsUpdate = RevisionSlotsUpdate::newFromContent(
- [ 'main' => $revision->getContent( 'main' ) ]
+ [ SlotRecord::MAIN => $revision->getContent( SlotRecord::MAIN ) ]
);
$this->assertSame( $updater1, $page->getDerivedDataUpdater( $user, null, $slotsUpdate ) );