MediaWiki
REL1_24
|
00001 <?php 00002 00003 class ResourceLoaderModuleTest extends ResourceLoaderTestCase { 00004 00005 protected function setUp() { 00006 parent::setUp(); 00007 00008 // The return value of the closure shouldn't matter since this test should 00009 // never call it 00010 SkinFactory::getDefaultInstance()->register( 00011 'fakeskin', 00012 'FakeSkin', 00013 function () { 00014 } 00015 ); 00016 } 00017 00021 public function testGetAllSkinStyleFiles() { 00022 $context = self::getResourceLoaderContext(); 00023 00024 $baseParams = array( 00025 'scripts' => array( 00026 'foo.js', 00027 'bar.js', 00028 ), 00029 'styles' => array( 00030 'foo.css', 00031 'bar.css' => array( 'media' => 'print' ), 00032 'screen.less' => array( 'media' => 'screen' ), 00033 'screen-query.css' => array( 'media' => 'screen and (min-width: 400px)' ), 00034 ), 00035 'skinStyles' => array( 00036 'default' => 'quux-fallback.less', 00037 'fakeskin' => array( 00038 'baz-vector.css', 00039 'quux-vector.less', 00040 ), 00041 ), 00042 'messages' => array( 00043 'hello', 00044 'world', 00045 ), 00046 ); 00047 00048 $module = new ResourceLoaderFileModule( $baseParams ); 00049 00050 $this->assertEquals( 00051 array( 00052 'foo.css', 00053 'baz-vector.css', 00054 'quux-vector.less', 00055 'quux-fallback.less', 00056 'bar.css', 00057 'screen.less', 00058 'screen-query.css', 00059 ), 00060 array_map( 'basename', $module->getAllStyleFiles() ) 00061 ); 00062 } 00063 00068 public function testDefinitionSummary() { 00069 $context = self::getResourceLoaderContext(); 00070 00071 $baseParams = array( 00072 'scripts' => array( 'foo.js', 'bar.js' ), 00073 'dependencies' => array( 'jquery', 'mediawiki' ), 00074 'messages' => array( 'hello', 'world' ), 00075 ); 00076 00077 $module = new ResourceLoaderFileModule( $baseParams ); 00078 00079 $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) ); 00080 00081 // Exactly the same 00082 $module = new ResourceLoaderFileModule( $baseParams ); 00083 00084 $this->assertEquals( 00085 $jsonSummary, 00086 json_encode( $module->getDefinitionSummary( $context ) ), 00087 'Instance is insignificant' 00088 ); 00089 00090 // Re-order dependencies 00091 $module = new ResourceLoaderFileModule( array( 00092 'dependencies' => array( 'mediawiki', 'jquery' ), 00093 ) + $baseParams ); 00094 00095 $this->assertEquals( 00096 $jsonSummary, 00097 json_encode( $module->getDefinitionSummary( $context ) ), 00098 'Order of dependencies is insignificant' 00099 ); 00100 00101 // Re-order messages 00102 $module = new ResourceLoaderFileModule( array( 00103 'messages' => array( 'world', 'hello' ), 00104 ) + $baseParams ); 00105 00106 $this->assertEquals( 00107 $jsonSummary, 00108 json_encode( $module->getDefinitionSummary( $context ) ), 00109 'Order of messages is insignificant' 00110 ); 00111 00112 // Re-order scripts 00113 $module = new ResourceLoaderFileModule( array( 00114 'scripts' => array( 'bar.js', 'foo.js' ), 00115 ) + $baseParams ); 00116 00117 $this->assertNotEquals( 00118 $jsonSummary, 00119 json_encode( $module->getDefinitionSummary( $context ) ), 00120 'Order of scripts is significant' 00121 ); 00122 00123 // Subclass 00124 $module = new ResourceLoaderFileModuleTestModule( $baseParams ); 00125 00126 $this->assertNotEquals( 00127 $jsonSummary, 00128 json_encode( $module->getDefinitionSummary( $context ) ), 00129 'Class is significant' 00130 ); 00131 } 00132 }