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
|
<?php
use MediaWiki\Cache\LinkCache;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\Linker\LinkRenderer;
use MediaWiki\Linker\LinkRendererFactory;
use MediaWiki\SpecialPage\SpecialPageFactory;
use MediaWiki\Title\TitleFormatter;
/**
* @covers \MediaWiki\Linker\LinkRendererFactory
*/
class LinkRendererFactoryTest extends MediaWikiUnitTestCase {
/**
* @var TitleFormatter
*/
private $titleFormatter;
/**
* @var LinkCache
*/
private $linkCache;
/**
* @var SpecialPageFactory
*/
private $specialPageFactory;
/**
* @var HookContainer
*/
private $hookContainer;
protected function setUp(): void {
parent::setUp();
$this->titleFormatter = $this->createMock( TitleFormatter::class );
$this->linkCache = $this->createMock( LinkCache::class );
$this->specialPageFactory = $this->createMock( SpecialPageFactory::class );
$this->hookContainer = $this->createMock( HookContainer::class );
}
public static function provideCreateFromLegacyOptions() {
return [
[
[ 'forcearticlepath' ],
'getForceArticlePath',
true
],
[
[ 'http' ],
'getExpandURLs',
PROTO_HTTP
],
[
[ 'https' ],
'getExpandURLs',
PROTO_HTTPS
]
];
}
/**
* @dataProvider provideCreateFromLegacyOptions
*/
public function testCreateFromLegacyOptions( $options, $func, $val ) {
$factory = new LinkRendererFactory(
$this->titleFormatter,
$this->linkCache,
$this->specialPageFactory,
$this->hookContainer
);
$linkRenderer = $factory->createFromLegacyOptions(
$options
);
$this->assertInstanceOf( LinkRenderer::class, $linkRenderer );
$this->assertEquals( $val, $linkRenderer->$func(), $func );
$this->assertFalse(
$linkRenderer->isForComment(),
'isForComment should default to false in legacy implementation'
);
}
public function testCreate() {
$factory = new LinkRendererFactory(
$this->titleFormatter,
$this->linkCache,
$this->specialPageFactory,
$this->hookContainer
);
$linkRenderer = $factory->create();
$this->assertInstanceOf( LinkRenderer::class, $linkRenderer );
$this->assertFalse( $linkRenderer->isForComment(), 'isForComment should default to false' );
}
public function testCreateForComment() {
$factory = new LinkRendererFactory(
$this->titleFormatter,
$this->linkCache,
$this->specialPageFactory,
$this->hookContainer
);
$linkRenderer = $factory->create( [ 'renderForComment' => true ] );
$this->assertInstanceOf( LinkRenderer::class, $linkRenderer );
$this->assertTrue( $linkRenderer->isForComment() );
}
}
|