8 * @author Bene* < benestar.wikimedia@gmail.com >
10 class SkinTemplateTest
extends MediaWikiTestCase
{
12 * @dataProvider makeListItemProvider
14 public function testMakeListItem( $expected, $key, $item, $options, $message ) {
15 $template = $this->getMockForAbstractClass( BaseTemplate
::class );
19 $template->makeListItem( $key, $item, $options ),
24 public function makeListItemProvider() {
27 '<li class="class" title="itemtitle"><a href="url" title="title">text</a></li>',
31 'itemtitle' => 'itemtitle',
37 'Test makeListItem with normal values'
43 * @return PHPUnit_Framework_MockObject_MockObject|OutputPage
45 private function getMockOutputPage( $isSyndicated, $html ) {
46 $mock = $this->getMockBuilder( OutputPage
::class )
47 ->disableOriginalConstructor()
49 $mock->expects( $this->once() )
50 ->method( 'isSyndicated' )
51 ->will( $this->returnValue( $isSyndicated ) );
52 $mock->expects( $this->any() )
54 ->will( $this->returnValue( $html ) );
58 public function provideGetDefaultModules() {
60 'mediawiki.legacy.shared',
61 'mediawiki.legacy.commonPrint',
63 $buttonStyle = 'mediawiki.ui.button';
64 $feedStyle = 'mediawiki.feedlink';
74 array_merge( $defaultStyles, [ $feedStyle ] )
78 'FOO mw-ui-button BAR',
79 array_merge( $defaultStyles, [ $buttonStyle ] )
83 'FOO mw-ui-button BAR',
84 array_merge( $defaultStyles, [ $buttonStyle, $feedStyle ] )
90 * @covers Skin::getDefaultModules
91 * @dataProvider provideGetDefaultModules
93 public function testgetDefaultModules( $isSyndicated, $html, $expectedModuleStyles ) {
94 $skin = new SkinTemplate();
96 $context = new DerivativeContext( $skin->getContext() );
97 $context->setOutput( $this->getMockOutputPage( $isSyndicated, $html ) );
98 $skin->setContext( $context );
100 $modules = $skin->getDefaultModules();
102 $actualStylesModule = call_user_func_array( 'array_merge', $modules['styles'] );
103 $this->assertArraySubset(
104 $expectedModuleStyles,