MediaWiki
REL1_23
|
00001 <?php 00002 00003 class ResourceLoaderTest extends ResourceLoaderTestCase { 00004 00005 protected static $resourceLoaderRegisterModulesHook; 00006 00007 protected function setUp() { 00008 parent::setUp(); 00009 00010 // $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths; $wgResourceLoaderLESSVars; 00011 00012 $this->setMwGlobals( array( 00013 'wgResourceLoaderLESSFunctions' => array( 00014 'test-sum' => function ( $frame, $less ) { 00015 $sum = 0; 00016 foreach ( $frame[2] as $arg ) { 00017 $sum += (int)$arg[1]; 00018 } 00019 return $sum; 00020 }, 00021 ), 00022 'wgResourceLoaderLESSImportPaths' => array( 00023 dirname( dirname( __DIR__ ) ) . '/data/less/common', 00024 ), 00025 'wgResourceLoaderLESSVars' => array( 00026 'foo' => '2px', 00027 'Foo' => '#eeeeee', 00028 'bar' => 5, 00029 ), 00030 ) ); 00031 } 00032 00033 /* Hook Methods */ 00034 00038 public static function resourceLoaderRegisterModules( &$resourceLoader ) { 00039 self::$resourceLoaderRegisterModulesHook = true; 00040 00041 return true; 00042 } 00043 00044 /* Provider Methods */ 00045 public static function provideValidModules() { 00046 return array( 00047 array( 'TEST.validModule1', new ResourceLoaderTestModule() ), 00048 ); 00049 } 00050 00051 /* Test Methods */ 00052 00057 public function testCreatingNewResourceLoaderCallsRegistrationHook() { 00058 self::$resourceLoaderRegisterModulesHook = false; 00059 $resourceLoader = new ResourceLoader(); 00060 $this->assertTrue( self::$resourceLoaderRegisterModulesHook ); 00061 00062 return $resourceLoader; 00063 } 00064 00071 public function testRegisteredValidModulesAreAccessible( 00072 $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader 00073 ) { 00074 $resourceLoader->register( $name, $module ); 00075 $this->assertEquals( $module, $resourceLoader->getModule( $name ) ); 00076 } 00077 00081 public function testLessFileCompilation() { 00082 $context = self::getResourceLoaderContext(); 00083 $basePath = __DIR__ . '/../../data/less/module'; 00084 $module = new ResourceLoaderFileModule( array( 00085 'localBasePath' => $basePath, 00086 'styles' => array( 'styles.less' ), 00087 ) ); 00088 $styles = $module->getStyles( $context ); 00089 $this->assertStringEqualsFile( $basePath . '/styles.css', $styles['all'] ); 00090 } 00091 00096 public function testMakePackedModulesString( $desc, $modules, $packed ) { 00097 $this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc ); 00098 } 00099 00104 public function testexpandModuleNames( $desc, $modules, $packed ) { 00105 $this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc ); 00106 } 00107 00108 public static function providePackedModules() { 00109 return array( 00110 array( 00111 'Example from makePackedModulesString doc comment', 00112 array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ), 00113 'foo.bar,baz|bar.baz,quux', 00114 ), 00115 array( 00116 'Example from expandModuleNames doc comment', 00117 array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ), 00118 'jquery.foo,bar|jquery.ui.baz,quux', 00119 ), 00120 array( 00121 'Regression fixed in r88706 with dotless names', 00122 array( 'foo', 'bar', 'baz' ), 00123 'foo,bar,baz', 00124 ), 00125 array( 00126 'Prefixless modules after a prefixed module', 00127 array( 'single.module', 'foobar', 'foobaz' ), 00128 'single.module|foobar,foobaz', 00129 ), 00130 ); 00131 } 00132 } 00133 00134 /* Hooks */ 00135 global $wgHooks; 00136 $wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';