1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
<?php
namespace MediaWiki\Tests\Integration\CommentFormatter;
use MediaWiki\CommentFormatter\CommentParser;
use MediaWiki\CommentFormatter\RowCommentFormatter;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\Tests\Unit\CommentFormatter\CommentFormatterTestUtils;
use MediaWiki\Tests\Unit\DummyServicesTrait;
/**
* @covers \MediaWiki\CommentFormatter\RowCommentFormatter
* @covers \MediaWiki\CommentFormatter\RowCommentIterator
*/
class RowCommentFormatterTest extends \MediaWikiIntegrationTestCase {
use DummyServicesTrait;
private function getParser() {
return new class extends CommentParser {
public function __construct() {
}
public function preprocess(
string $comment, ?LinkTarget $selfLinkTarget = null, $samePage = false,
$wikiId = null, $enableSectionLinks = true
) {
if ( $comment === '' || $comment === '*' ) {
return $comment; // Hack to make it work more like the real parser
}
return CommentFormatterTestUtils::dumpArray( [
'comment' => $comment,
'selfLinkTarget' => $selfLinkTarget,
'samePage' => $samePage,
'wikiId' => $wikiId,
'enableSectionLinks' => $enableSectionLinks
] );
}
};
}
private function newCommentFormatter() {
return new RowCommentFormatter(
$this->getDummyCommentParserFactory( $this->getParser() ),
$this->getServiceContainer()->getCommentStore()
);
}
public function testFormatRows() {
$rows = [
(object)[
'comment_text' => 'hello',
'comment_data' => null,
'namespace' => '0',
'title' => 'Page',
'id' => 1
]
];
$commentFormatter = $this->newCommentFormatter();
$result = $commentFormatter->formatRows(
$rows,
'comment',
'namespace',
'title',
'id'
);
$this->assertSame(
[
1 => 'comment=hello, selfLinkTarget=0:Page, !samePage, !wikiId, enableSectionLinks'
],
$result
);
}
public function testRowsWithFormatItems() {
$rows = [
(object)[
'comment_text' => 'hello',
'comment_data' => null,
'namespace' => '0',
'title' => 'Page',
'id' => 1
]
];
$commentFormatter = $this->newCommentFormatter();
$result = $commentFormatter->formatItems(
$commentFormatter->rows( $rows )
->commentKey( 'comment' )
->namespaceField( 'namespace' )
->titleField( 'title' )
->indexField( 'id' )
);
$this->assertSame(
[
1 => 'comment=hello, selfLinkTarget=0:Page, !samePage, !wikiId, enableSectionLinks'
],
$result
);
}
public function testRowsWithCreateBatch() {
$rows = [
(object)[
'comment_text' => 'hello',
'comment_data' => null,
'namespace' => '0',
'title' => 'Page',
'id' => 1
]
];
$commentFormatter = $this->newCommentFormatter();
$result = $commentFormatter->createBatch()
->comments(
$commentFormatter->rows( $rows )
->commentKey( 'comment' )
->namespaceField( 'namespace' )
->titleField( 'title' )
->indexField( 'id' )
)
->samePage( true )
->execute();
$this->assertSame(
[
1 => 'comment=hello, selfLinkTarget=0:Page, samePage, !wikiId, enableSectionLinks'
],
$result
);
}
}
|