Merge "Make sure processResponsiveImages checks for valid thumb object"
[mediawiki.git] / tests / phpunit / includes / resourceloader / ResourceLoaderModuleTest.php
blobb0edaaf7b744bc07675d6977cad334a8f3ce1774
1 <?php
3 class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
5 protected function setUp() {
6 parent::setUp();
8 // The return value of the closure shouldn't matter since this test should
9 // never call it
10 SkinFactory::getDefaultInstance()->register(
11 'fakeskin',
12 'FakeSkin',
13 function () {
18 /**
19 * @covers ResourceLoaderFileModule::getAllSkinStyleFiles
21 public function testGetAllSkinStyleFiles() {
22 $context = self::getResourceLoaderContext();
24 $baseParams = array(
25 'scripts' => array(
26 'foo.js',
27 'bar.js',
29 'styles' => array(
30 'foo.css',
31 'bar.css' => array( 'media' => 'print' ),
32 'screen.less' => array( 'media' => 'screen' ),
33 'screen-query.css' => array( 'media' => 'screen and (min-width: 400px)' ),
35 'skinStyles' => array(
36 'default' => 'quux-fallback.less',
37 'fakeskin' => array(
38 'baz-vector.css',
39 'quux-vector.less',
42 'messages' => array(
43 'hello',
44 'world',
48 $module = new ResourceLoaderFileModule( $baseParams );
50 $this->assertEquals(
51 array(
52 'foo.css',
53 'baz-vector.css',
54 'quux-vector.less',
55 'quux-fallback.less',
56 'bar.css',
57 'screen.less',
58 'screen-query.css',
60 array_map( 'basename', $module->getAllStyleFiles() )
64 /**
65 * @covers ResourceLoaderModule::getDefinitionSummary
66 * @covers ResourceLoaderFileModule::getDefinitionSummary
68 public function testDefinitionSummary() {
69 $context = self::getResourceLoaderContext();
71 $baseParams = array(
72 'scripts' => array( 'foo.js', 'bar.js' ),
73 'dependencies' => array( 'jquery', 'mediawiki' ),
74 'messages' => array( 'hello', 'world' ),
77 $module = new ResourceLoaderFileModule( $baseParams );
79 $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
81 // Exactly the same
82 $module = new ResourceLoaderFileModule( $baseParams );
84 $this->assertEquals(
85 $jsonSummary,
86 json_encode( $module->getDefinitionSummary( $context ) ),
87 'Instance is insignificant'
90 // Re-order dependencies
91 $module = new ResourceLoaderFileModule( array(
92 'dependencies' => array( 'mediawiki', 'jquery' ),
93 ) + $baseParams );
95 $this->assertEquals(
96 $jsonSummary,
97 json_encode( $module->getDefinitionSummary( $context ) ),
98 'Order of dependencies is insignificant'
101 // Re-order messages
102 $module = new ResourceLoaderFileModule( array(
103 'messages' => array( 'world', 'hello' ),
104 ) + $baseParams );
106 $this->assertEquals(
107 $jsonSummary,
108 json_encode( $module->getDefinitionSummary( $context ) ),
109 'Order of messages is insignificant'
112 // Re-order scripts
113 $module = new ResourceLoaderFileModule( array(
114 'scripts' => array( 'bar.js', 'foo.js' ),
115 ) + $baseParams );
117 $this->assertNotEquals(
118 $jsonSummary,
119 json_encode( $module->getDefinitionSummary( $context ) ),
120 'Order of scripts is significant'
123 // Subclass
124 $module = new ResourceLoaderFileModuleTestModule( $baseParams );
126 $this->assertNotEquals(
127 $jsonSummary,
128 json_encode( $module->getDefinitionSummary( $context ) ),
129 'Class is significant'