Merge "Show a warning on page deletion if a page is linked to"
[lhc/web/wiklou.git] / tests / phpunit / includes / ResourceLoaderModuleTest.php
1 <?php
2
3 class ResourceLoaderModuleTest extends MediaWikiTestCase {
4
5 protected static function getResourceLoaderContext() {
6 $resourceLoader = new ResourceLoader();
7 $request = new FauxRequest( array(
8 'debug' => 'false',
9 'lang' => 'en',
10 'modules' => 'startup',
11 'only' => 'scripts',
12 'skin' => 'vector',
13 ) );
14 return new ResourceLoaderContext( $resourceLoader, $request );
15 }
16
17 /**
18 * @covers ResourceLoaderModule::getDefinitionSummary
19 * @covers ResourceLoaderFileModule::getDefinitionSummary
20 */
21 public function testDefinitionSummary() {
22 $context = self::getResourceLoaderContext();
23
24 $baseParams = array(
25 'scripts' => array( 'foo.js', 'bar.js' ),
26 'dependencies' => array( 'jquery', 'mediawiki' ),
27 'messages' => array( 'hello', 'world' ),
28 );
29
30 $module = new ResourceLoaderFileModule( $baseParams );
31
32 $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
33
34 // Exactly the same
35 $module = new ResourceLoaderFileModule( $baseParams );
36
37 $this->assertEquals(
38 $jsonSummary,
39 json_encode( $module->getDefinitionSummary( $context ) ),
40 'Instance is insignificant'
41 );
42
43 // Re-order dependencies
44 $module = new ResourceLoaderFileModule( array(
45 'dependencies' => array( 'mediawiki', 'jquery' ),
46 ) + $baseParams );
47
48 $this->assertEquals(
49 $jsonSummary,
50 json_encode( $module->getDefinitionSummary( $context ) ),
51 'Order of dependencies is insignificant'
52 );
53
54 // Re-order messages
55 $module = new ResourceLoaderFileModule( array(
56 'messages' => array( 'world', 'hello' ),
57 ) + $baseParams );
58
59 $this->assertEquals(
60 $jsonSummary,
61 json_encode( $module->getDefinitionSummary( $context ) ),
62 'Order of messages is insignificant'
63 );
64
65 // Re-order scripts
66 $module = new ResourceLoaderFileModule( array(
67 'scripts' => array( 'bar.js', 'foo.js' ),
68 ) + $baseParams );
69
70 $this->assertNotEquals(
71 $jsonSummary,
72 json_encode( $module->getDefinitionSummary( $context ) ),
73 'Order of scripts is significant'
74 );
75
76 // Subclass
77 $module = new ResourceLoaderFileModuleTestModule( $baseParams );
78
79 $this->assertNotEquals(
80 $jsonSummary,
81 json_encode( $module->getDefinitionSummary( $context ) ),
82 'Class is significant'
83 );
84 }
85 }
86
87 class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {}