Merge "Don't check namespace in SpecialWantedtemplates"
[lhc/web/wiklou.git] / tests / phpunit / includes / resourceloader / ResourceLoaderModuleTest.php
1 <?php
2
3 class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
4
5 /**
6 * @covers ResourceLoaderModule::getVersionHash
7 */
8 public function testGetVersionHash() {
9 $context = $this->getResourceLoaderContext();
10
11 $baseParams = array(
12 'scripts' => array( 'foo.js', 'bar.js' ),
13 'dependencies' => array( 'jquery', 'mediawiki' ),
14 'messages' => array( 'hello', 'world' ),
15 );
16
17 $module = new ResourceLoaderFileModule( $baseParams );
18 $version = json_encode( $module->getVersionHash( $context ) );
19
20 // Exactly the same
21 $module = new ResourceLoaderFileModule( $baseParams );
22 $this->assertEquals(
23 $version,
24 json_encode( $module->getVersionHash( $context ) ),
25 'Instance is insignificant'
26 );
27
28 // Re-order dependencies
29 $module = new ResourceLoaderFileModule( array(
30 'dependencies' => array( 'mediawiki', 'jquery' ),
31 ) + $baseParams );
32 $this->assertEquals(
33 $version,
34 json_encode( $module->getVersionHash( $context ) ),
35 'Order of dependencies is insignificant'
36 );
37
38 // Re-order messages
39 $module = new ResourceLoaderFileModule( array(
40 'messages' => array( 'world', 'hello' ),
41 ) + $baseParams );
42 $this->assertEquals(
43 $version,
44 json_encode( $module->getVersionHash( $context ) ),
45 'Order of messages is insignificant'
46 );
47
48 // Re-order scripts
49 $module = new ResourceLoaderFileModule( array(
50 'scripts' => array( 'bar.js', 'foo.js' ),
51 ) + $baseParams );
52 $this->assertNotEquals(
53 $version,
54 json_encode( $module->getVersionHash( $context ) ),
55 'Order of scripts is significant'
56 );
57
58 // Subclass
59 $module = new ResourceLoaderFileModuleTestModule( $baseParams );
60 $this->assertNotEquals(
61 $version,
62 json_encode( $module->getVersionHash( $context ) ),
63 'Class is significant'
64 );
65 }
66
67 /**
68 * @covers ResourceLoaderModule::validateScriptFile
69 */
70 public function testValidateScriptFile() {
71 $context = $this->getResourceLoaderContext();
72
73 $module = new ResourceLoaderTestModule( array(
74 'script' => "var a = 'this is';\n {\ninvalid"
75 ) );
76 $this->assertEquals(
77 $module->getScript( $context ),
78 'mw.log.error("JavaScript parse error: Parse error: Unexpected token; token } expected in file \'input\' on line 3");',
79 'Replace invalid syntax with error logging'
80 );
81
82 $module = new ResourceLoaderTestModule( array(
83 'script' => "\n'valid';"
84 ) );
85 $this->assertEquals(
86 $module->getScript( $context ),
87 "\n'valid';",
88 'Leave valid scripts as-is'
89 );
90 }
91 }