Merge "Workaround image magick issue with greyscale xcf files"
[lhc/web/wiklou.git] / tests / phpunit / includes / resourceloader / ResourceLoaderModuleTest.php
1 <?php
2
3 class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
4
5 /**
6 * @covers ResourceLoaderFileModule::getAllSkinStyleFiles
7 */
8 public function testGetAllSkinStyleFiles() {
9 $context = self::getResourceLoaderContext();
10
11 $baseParams = array(
12 'scripts' => array(
13 'foo.js',
14 'bar.js',
15 ),
16 'styles' => array(
17 'foo.css',
18 'bar.css' => array( 'media' => 'print' ),
19 'screen.less' => array( 'media' => 'screen' ),
20 'screen-query.css' => array( 'media' => 'screen and (min-width: 400px)' ),
21 ),
22 'skinStyles' => array(
23 'default' => 'quux-fallback.less',
24 'vector' => array(
25 'baz-vector.css',
26 'quux-vector.less',
27 ),
28 ),
29 'messages' => array(
30 'hello',
31 'world',
32 ),
33 );
34
35 $module = new ResourceLoaderFileModule( $baseParams );
36
37 $this->assertEquals(
38 array(
39 'foo.css',
40 'baz-vector.css',
41 'quux-vector.less',
42 'quux-fallback.less',
43 'bar.css',
44 'screen.less',
45 'screen-query.css',
46 ),
47 array_map( 'basename', $module->getAllStyleFiles() )
48 );
49 }
50
51 /**
52 * @covers ResourceLoaderModule::getDefinitionSummary
53 * @covers ResourceLoaderFileModule::getDefinitionSummary
54 */
55 public function testDefinitionSummary() {
56 $context = self::getResourceLoaderContext();
57
58 $baseParams = array(
59 'scripts' => array( 'foo.js', 'bar.js' ),
60 'dependencies' => array( 'jquery', 'mediawiki' ),
61 'messages' => array( 'hello', 'world' ),
62 );
63
64 $module = new ResourceLoaderFileModule( $baseParams );
65
66 $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
67
68 // Exactly the same
69 $module = new ResourceLoaderFileModule( $baseParams );
70
71 $this->assertEquals(
72 $jsonSummary,
73 json_encode( $module->getDefinitionSummary( $context ) ),
74 'Instance is insignificant'
75 );
76
77 // Re-order dependencies
78 $module = new ResourceLoaderFileModule( array(
79 'dependencies' => array( 'mediawiki', 'jquery' ),
80 ) + $baseParams );
81
82 $this->assertEquals(
83 $jsonSummary,
84 json_encode( $module->getDefinitionSummary( $context ) ),
85 'Order of dependencies is insignificant'
86 );
87
88 // Re-order messages
89 $module = new ResourceLoaderFileModule( array(
90 'messages' => array( 'world', 'hello' ),
91 ) + $baseParams );
92
93 $this->assertEquals(
94 $jsonSummary,
95 json_encode( $module->getDefinitionSummary( $context ) ),
96 'Order of messages is insignificant'
97 );
98
99 // Re-order scripts
100 $module = new ResourceLoaderFileModule( array(
101 'scripts' => array( 'bar.js', 'foo.js' ),
102 ) + $baseParams );
103
104 $this->assertNotEquals(
105 $jsonSummary,
106 json_encode( $module->getDefinitionSummary( $context ) ),
107 'Order of scripts is significant'
108 );
109
110 // Subclass
111 $module = new ResourceLoaderFileModuleTestModule( $baseParams );
112
113 $this->assertNotEquals(
114 $jsonSummary,
115 json_encode( $module->getDefinitionSummary( $context ) ),
116 'Class is significant'
117 );
118 }
119 }