f700348348d7915cd0e8d92317e89e6c30918f23
3 class ResourceLoaderModuleTest
extends ResourceLoaderTestCase
{
6 * @covers ResourceLoaderModule::getVersionHash
9 public function testGetVersionHash() {
10 $context = $this->getResourceLoaderContext();
13 'scripts' => array( 'foo.js', 'bar.js' ),
14 'dependencies' => array( 'jquery', 'mediawiki' ),
15 'messages' => array( 'hello', 'world' ),
18 $module = new ResourceLoaderFileModule( $baseParams );
19 $version = json_encode( $module->getVersionHash( $context ) );
22 $module = new ResourceLoaderFileModule( $baseParams );
25 json_encode( $module->getVersionHash( $context ) ),
26 'Instance is insignificant'
29 // Re-order dependencies
30 $module = new ResourceLoaderFileModule( array(
31 'dependencies' => array( 'mediawiki', 'jquery' ),
35 json_encode( $module->getVersionHash( $context ) ),
36 'Order of dependencies is insignificant'
40 $module = new ResourceLoaderFileModule( array(
41 'messages' => array( 'world', 'hello' ),
45 json_encode( $module->getVersionHash( $context ) ),
46 'Order of messages is insignificant'
50 $module = new ResourceLoaderFileModule( array(
51 'scripts' => array( 'bar.js', 'foo.js' ),
53 $this->assertNotEquals(
55 json_encode( $module->getVersionHash( $context ) ),
56 'Order of scripts is significant'
60 $module = new ResourceLoaderFileModuleTestModule( $baseParams );
61 $this->assertNotEquals(
63 json_encode( $module->getVersionHash( $context ) ),
64 'Class is significant'
69 * @covers ResourceLoaderModule::validateScriptFile
71 public function testValidateScriptFile() {
72 $context = $this->getResourceLoaderContext();
74 $module = new ResourceLoaderTestModule( array(
75 'script' => "var a = 'this is';\n {\ninvalid"
78 $module->getScript( $context ),
80 '"JavaScript parse error: Parse error: Unexpected token; ' .
81 'token } expected in file \'input\' on line 3"' .
83 'Replace invalid syntax with error logging'
86 $module = new ResourceLoaderTestModule( array(
87 'script' => "\n'valid';"
90 $module->getScript( $context ),
92 'Leave valid scripts as-is'
97 * @covers ResourceLoaderModule::getRelativePaths
98 * @covers ResourceLoaderModule::expandRelativePaths
100 public function testPlaceholderize() {
101 $getRelativePaths = new ReflectionMethod( 'ResourceLoaderModule', 'getRelativePaths' );
102 $getRelativePaths->setAccessible( true );
103 $expandRelativePaths = new ReflectionMethod( 'ResourceLoaderModule', 'expandRelativePaths' );
104 $expandRelativePaths->setAccessible( true );
106 $this->setMwGlobals( array(
107 'IP' => '/srv/example/mediawiki/core',
110 '/srv/example/mediawiki/core/resources/foo.js',
111 '/srv/example/mediawiki/core/extensions/Example/modules/bar.js',
112 '/srv/example/mediawiki/skins/Example/baz.css',
113 '/srv/example/mediawiki/skins/Example/images/quux.png',
117 'extensions/Example/modules/bar.js',
118 '../skins/Example/baz.css',
119 '../skins/Example/images/quux.png',
122 $getRelativePaths->invoke( null, $raw ),
124 'Insert placeholders'
127 $expandRelativePaths->invoke( null, $canonical ),
129 'Substitute placeholders'