wiki.techinc.nl/tests/phpunit/includes/Revision/PreMcrRevisionStoreDbTest.php
daniel dd14601afb Join slot and content tables when dumping XML
This introduces a way to construct a RevisionRecord based on a
known set of SlotRecords. To allow this to be used consistently
with the legacy revision schema, some tweaks had to be made
to getSlotsQueryInfo().

Bug: T220493
Change-Id: I5ea972bb07ca1cfb3a2ad8ef120aef77e460745c
2019-06-27 22:26:22 +02:00

102 lines
2.4 KiB
PHP

<?php
namespace MediaWiki\Tests\Revision;
use InvalidArgumentException;
use MediaWiki\Revision\RevisionRecord;
use Revision;
use WikitextContent;
/**
* Tests RevisionStore against the pre-MCR DB schema.
*
* @covers \MediaWiki\Revision\RevisionStore
*
* @group RevisionStore
* @group Storage
* @group Database
* @group medium
*/
class PreMcrRevisionStoreDbTest extends RevisionStoreDbTestBase {
use PreMcrSchemaOverride;
protected function revisionToRow( Revision $rev, $options = [ 'page', 'user', 'comment' ] ) {
$row = parent::revisionToRow( $rev, $options );
$row->rev_text_id = (string)$rev->getTextId();
$row->rev_content_format = (string)$rev->getContentFormat();
$row->rev_content_model = (string)$rev->getContentModel();
return $row;
}
protected function assertRevisionExistsInDatabase( RevisionRecord $rev ) {
// Legacy schema is still being written
$this->assertSelect(
[ 'revision', 'text' ],
[ 'count(*)' ],
[ 'rev_id' => $rev->getId(), 'rev_text_id > 0' ],
[ [ 1 ] ],
[],
[ 'text' => [ 'JOIN', [ 'rev_text_id = old_id' ] ] ]
);
parent::assertRevisionExistsInDatabase( $rev );
}
public function provideInsertRevisionOn_failures() {
foreach ( parent::provideInsertRevisionOn_failures() as $case ) {
yield $case;
}
yield 'slot that is not main slot' => [
[
'content' => [
'main' => new WikitextContent( 'Chicken' ),
'lalala' => new WikitextContent( 'Duck' ),
],
'comment' => $this->getRandomCommentStoreComment(),
'timestamp' => '20171117010101',
'user' => true,
],
new InvalidArgumentException( 'Only the main slot is supported' )
];
}
public function provideNewMutableRevisionFromArray() {
foreach ( parent::provideNewMutableRevisionFromArray() as $case ) {
yield $case;
}
yield 'Basic array, with page & id' => [
[
'id' => 2,
'page' => 1,
'text_id' => 2,
'timestamp' => '20171017114835',
'user_text' => '111.0.1.2',
'user' => 0,
'minor_edit' => false,
'deleted' => 0,
'len' => 46,
'parent_id' => 1,
'sha1' => 'rdqbbzs3pkhihgbs8qf2q9jsvheag5z',
'comment' => 'Goat Comment!',
'content_format' => 'text/x-wiki',
'content_model' => 'wikitext',
]
];
}
/**
* Conditions to use together with getSlotsQueryInfo() when selecting slot rows for a given
* revision.
*
* @return array
*/
protected function getSlotRevisionConditions( $revId ) {
return [ 'rev_id' => $revId ];
}
}