MediaWiki  REL1_24
ResourceLoaderModuleTest.php
Go to the documentation of this file.
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 }