MediaWiki  REL1_23
ResourceLoaderTest.php
Go to the documentation of this file.
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';