File: RowCommentFormatterTest.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (128 lines) | stat: -rw-r--r-- 3,124 bytes parent folder | download
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
		);
	}
}