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