2010-12-14 16:26:35 +00:00
|
|
|
<?php
|
|
|
|
|
|
2011-11-12 21:32:39 +00:00
|
|
|
class ResourceLoaderTest extends MediaWikiTestCase {
|
2010-12-14 16:26:35 +00:00
|
|
|
|
|
|
|
|
protected static $resourceLoaderRegisterModulesHook;
|
|
|
|
|
|
|
|
|
|
/* Hook Methods */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* ResourceLoaderRegisterModules hook
|
|
|
|
|
*/
|
|
|
|
|
public static function resourceLoaderRegisterModules( &$resourceLoader ) {
|
|
|
|
|
self::$resourceLoaderRegisterModulesHook = true;
|
2013-04-26 12:00:22 +00:00
|
|
|
|
2010-12-14 16:26:35 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Provider Methods */
|
2012-10-08 10:56:20 +00:00
|
|
|
public static function provideValidModules() {
|
2010-12-14 16:26:35 +00:00
|
|
|
return array(
|
|
|
|
|
array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Test Methods */
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed
|
|
|
|
|
* @covers ResourceLoader::__construct
|
|
|
|
|
*/
|
|
|
|
|
public function testCreatingNewResourceLoaderCallsRegistrationHook() {
|
|
|
|
|
self::$resourceLoaderRegisterModulesHook = false;
|
|
|
|
|
$resourceLoader = new ResourceLoader();
|
|
|
|
|
$this->assertTrue( self::$resourceLoaderRegisterModulesHook );
|
2013-04-26 12:00:22 +00:00
|
|
|
|
2010-12-14 16:26:35 +00:00
|
|
|
return $resourceLoader;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider provideValidModules
|
|
|
|
|
* @depends testCreatingNewResourceLoaderCallsRegistrationHook
|
|
|
|
|
* @covers ResourceLoader::register
|
|
|
|
|
* @covers ResourceLoader::getModule
|
|
|
|
|
*/
|
|
|
|
|
public function testRegisteredValidModulesAreAccessible(
|
|
|
|
|
$name, ResourceLoaderModule $module, ResourceLoader $resourceLoader
|
|
|
|
|
) {
|
|
|
|
|
$resourceLoader->register( $name, $module );
|
|
|
|
|
$this->assertEquals( $module, $resourceLoader->getModule( $name ) );
|
|
|
|
|
}
|
2011-06-07 17:56:40 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider providePackedModules
|
|
|
|
|
*/
|
|
|
|
|
public function testMakePackedModulesString( $desc, $modules, $packed ) {
|
|
|
|
|
$this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider providePackedModules
|
|
|
|
|
*/
|
|
|
|
|
public function testexpandModuleNames( $desc, $modules, $packed ) {
|
|
|
|
|
$this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc );
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-08 10:56:20 +00:00
|
|
|
public static function providePackedModules() {
|
2011-06-07 17:56:40 +00:00
|
|
|
return array(
|
|
|
|
|
array(
|
|
|
|
|
'Example from makePackedModulesString doc comment',
|
|
|
|
|
array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ),
|
|
|
|
|
'foo.bar,baz|bar.baz,quux',
|
|
|
|
|
),
|
|
|
|
|
array(
|
|
|
|
|
'Example from expandModuleNames doc comment',
|
|
|
|
|
array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ),
|
|
|
|
|
'jquery.foo,bar|jquery.ui.baz,quux',
|
|
|
|
|
),
|
|
|
|
|
array(
|
|
|
|
|
'Regression fixed in r88706 with dotless names',
|
|
|
|
|
array( 'foo', 'bar', 'baz' ),
|
|
|
|
|
'foo,bar,baz',
|
2013-05-27 15:13:59 +00:00
|
|
|
),
|
|
|
|
|
array(
|
|
|
|
|
'Prefixless modules after a prefixed module',
|
|
|
|
|
array( 'single.module', 'foobar', 'foobaz' ),
|
|
|
|
|
'single.module|foobar,foobaz',
|
|
|
|
|
),
|
2011-06-07 17:56:40 +00:00
|
|
|
);
|
|
|
|
|
}
|
2010-12-14 16:26:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Stubs */
|
|
|
|
|
|
2013-04-26 12:00:22 +00:00
|
|
|
class ResourceLoaderTestModule extends ResourceLoaderModule {
|
|
|
|
|
}
|
2010-12-14 16:26:35 +00:00
|
|
|
|
|
|
|
|
/* Hooks */
|
|
|
|
|
global $wgHooks;
|
2010-12-30 16:16:16 +00:00
|
|
|
$wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';
|