false,
'label' => 'vector-page-tools-label',
'label-tag-name' => 'div',
'pin-label' => 'vector-pin-element-label',
'unpin-label' => 'vector-unpin-element-label',
'data-feature-name' => 'page-tools-pinned',
'data-pinnable-element-id' => 'vector-page-tools',
'data-unpinned-container-id' => 'vector-page-tools-unpinned-container',
'data-pinned-container-id' => 'vector-page-tools-pinned-container',
], $data );
}
public function provideConstructorData() {
$menus = [ [
'id' => 'p-cactions',
'array-items' => [ [
'id' => 'ca-delete',
'html-item' => "
Delete"
] ]
], [
'id' => 'p-tb',
'array-items' => [ [
'id' => 't-whatlinkshere',
'html-item' => "What links here"
] ]
] ];
$expectedMenus = $menus;
$expectedMenus[ 0 ][ 'label' ] = 'vector-page-tools-actions-label';
$expectedMenus[ 1 ][ 'label' ] = 'vector-page-tools-general-label';
return [
[
$menus,
false,
false,
[
'id' => 'vector-page-tools',
'is-pinned' => false,
'data-pinnable-header' => $this->getPinnableHeaderData(),
'data-menus' => $expectedMenus
]
],
[
$menus,
false,
true,
[
'id' => 'vector-page-tools',
'is-pinned' => true,
'data-pinnable-header' => $this->getPinnableHeaderData( [
'is-pinned' => true,
] ),
'data-menus' => $expectedMenus
]
],
[
$menus,
true,
false,
[
'id' => 'vector-page-tools',
'is-pinned' => false,
'data-pinnable-header' => $this->getPinnableHeaderData(),
'data-menus' => $expectedMenus
]
]
];
}
/**
* @covers ::getTemplateData
* @dataProvider provideConstructorData
*/
public function testGetTemplateData(
array $menus,
bool $isRegistered,
bool $isPinned,
array $expected
) {
$localizer = $this->createMock( MessageLocalizer::class );
$localizer->method( 'msg' )->willReturnCallback( function ( $key, ...$params ) {
$msg = $this->createMock( Message::class );
$msg->method( '__toString' )->willReturn( $key );
$msg->method( 'text' )->willReturn( $key );
return $msg;
} );
$user = $this->createMock( User::class );
$user->method( 'isRegistered' )->willReturn( $isRegistered );
$featureManager = $this->createMock( FeatureManager::class );
$featureManager->method( 'isFeatureEnabled' )->willReturn( $isPinned );
$pageTools = new VectorComponentPageTools(
$menus,
$localizer,
$user,
$featureManager
);
$this->assertEquals( $expected, $pageTools->getTemplateData() );
}
}