4 * @group ResourceLoader
6 class ResourceLoaderImageModuleTest
extends ResourceLoaderTestCase
{
8 public static function providerGetModules() {
9 $commonVariants = array(
17 'constructive' => array(
20 'destructive' => array(
25 $commonImageData = array(
26 'advanced' => 'advanced.svg',
28 'image' => 'remove.svg',
29 'variants' => array( 'destructive' ),
39 'ltr' => 'help-ltr.svg',
40 'rtl' => 'help-rtl.svg',
42 'he' => 'help-ltr.svg',
48 'default' => 'bold-a.svg',
60 'class' => 'ResourceLoaderImageModule',
63 'icon' => $commonVariants,
66 'icon' => $commonImageData,
69 '.oo-ui-icon-advanced {
72 .oo-ui-icon-advanced-invert {
78 .oo-ui-icon-remove-invert {
81 .oo-ui-icon-remove-destructive {
87 .oo-ui-icon-next-invert {
93 .oo-ui-icon-help-invert {
99 .oo-ui-icon-bold-invert {
107 * @dataProvider providerGetModules
108 * @covers ResourceLoaderImageModule::getStyles
110 public function testGetStyles( $module, $expected ) {
111 $module = new ResourceLoaderImageModuleTestable( $module );
112 $styles = $module->getStyles( $this->getResourceLoaderContext() );
113 $this->assertEquals( $expected, $styles['all'] );
117 class ResourceLoaderImageModuleTestable
extends ResourceLoaderImageModule
{
119 * Replace with a stub to make test cases easier to write.
121 protected function getCssDeclarations( $primary, $fallback ) {
122 return array( '...' );
126 * Return mock ResourceLoaderImages that don't call file_get_contents and such.
128 public function getImages() {
129 $images = parent
::getImages();
130 foreach ( $images as $name => &$image ) {
131 $image = new ResourceLoaderImageWrapper( $image );
138 * Wraps a ResourceLoaderImage not to call file_get_contents and such.
140 class ResourceLoaderImageWrapper
extends ResourceLoaderImage
{
141 public function __construct( ResourceLoaderImage
$image ) {
142 $this->image
= $image;
145 public function getUrl( ResourceLoaderContext
$context, $script, $variant, $format ) {
149 public function getDataUri( ResourceLoaderContext
$context, $variant, $format ) {
153 public function __call( $method, $arguments ) {
154 return call_user_func_array( array( $this->image
, $method ), $arguments );
157 public function __get( $name ) {
158 return $this->image
->$name;