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
|
<?php
declare( strict_types = 1 );
namespace MediaWiki\Tests\Parser;
use MediaWiki\Language\ILanguageConverter;
use MediaWiki\MainConfigNames;
use MediaWiki\Parser\LinkHolderArray;
use MediaWiki\Parser\Parser;
use MediaWiki\Title\Title;
use MediaWikiLangTestCase;
use Wikimedia\TestingAccessWrapper;
/**
* @covers \MediaWiki\Parser\LinkHolderArray
*/
class LinkHolderArrayIntegrationTest extends MediaWikiLangTestCase {
/**
* @dataProvider provideIsBig
* @covers \MediaWiki\Parser\LinkHolderArray::isBig
*
* @param int $size
* @param int $global
* @param bool $expected
*/
public function testIsBig( int $size, int $global, bool $expected ) {
$this->overrideConfigValue( MainConfigNames::LinkHolderBatchSize, $global );
$linkHolderArray = new LinkHolderArray(
$this->createMock( Parser::class ),
$this->createMock( ILanguageConverter::class ),
$this->createHookContainer()
);
/** @var LinkHolderArray $linkHolderArray */
$linkHolderArray = TestingAccessWrapper::newFromObject( $linkHolderArray );
$linkHolderArray->size = $size;
$this->assertSame( $expected, $linkHolderArray->isBig() );
}
public static function provideIsBig() {
yield [ 0, 0, false ];
yield [ 0, 1, false ];
yield [ 1, 0, true ];
yield [ 1, 1, false ];
}
/**
* @dataProvider provideMakeHolder_withNsText
* @covers \MediaWiki\Parser\LinkHolderArray::makeHolder
*
* @param bool $isExternal
* @param string $expected
*/
public function testMakeHolder_withNsText(
bool $isExternal,
string $expected
) {
$link = new LinkHolderArray(
$this->createMock( Parser::class ),
$this->createMock( ILanguageConverter::class ),
$this->createHookContainer()
);
/** @var LinkHolderArray $link */
$link = TestingAccessWrapper::newFromObject( $link );
$parser = $this->createMock( Parser::class );
$parser->method( 'nextLinkID' )->willReturn( 9 );
$link->parent = $parser;
$title = $this->createMock( Title::class );
$title->method( 'getPrefixedDBkey' )->willReturn( 'Talk:Dummy' );
$title->method( 'getNamespace' )->willReturn( 1234 );
$title->method( 'isExternal' )->willReturn( $isExternal );
$this->assertSame( 0, $link->size );
$result = $link->makeHolder(
$title,
'test1 text',
'test2 trail',
'test3 prefix'
);
$this->assertSame( $expected, $result );
$this->assertSame( 1, $link->size );
if ( $isExternal ) {
$this->assertArrayEquals(
[
9 => [
'title' => $title,
'text' => 'test3 prefixtest1 texttest',
'pdbk' => 'Talk:Dummy',
],
],
$link->interwikis
);
$this->assertCount( 0, $link->internals );
} else {
$this->assertArrayEquals(
[
1234 => [
9 => [
'title' => $title,
'text' => 'test3 prefixtest1 texttest',
'pdbk' => 'Talk:Dummy',
],
],
],
$link->internals
);
$this->assertCount( 0, $link->interwikis );
}
}
public static function provideMakeHolder_withNsText() {
yield [
false,
'<!--LINK\'" 1234:9-->2 trail',
];
yield [
true,
'<!--IWLINK\'" 9-->2 trail',
];
}
}
|