wiki.techinc.nl/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
Sam Smith 0bb3d2a499 Make ResourceLoaderFileModule#getAllStyleFiles include all skin styles
* Add the ResourceLoaderFileModule#getAllSkinStyleFiles method,
  which returns all of the skinStyles files for a given module
* The LessFileCompilationTest and checkLess.php script, which use
  the #getAllStyleFile method, now validate all LESS style files

Bug: 63343
Change-Id: Ib2eb5761919c648aea4ae58f8d0531799fe7982b
2014-06-17 19:38:58 +00:00

119 lines
2.8 KiB
PHP

<?php
class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
/**
* @covers ResourceLoaderFileModule::getAllSkinStyleFiles
*/
public function testGetAllSkinStyleFiles() {
$context = self::getResourceLoaderContext();
$baseParams = array(
'scripts' => array(
'foo.js',
'bar.js',
),
'styles' => array(
'foo.css',
'bar.css' => array( 'media' => 'print' ),
'screen.less' => array( 'media' => 'screen' ),
'screen-query.css' => array( 'media' => 'screen and (min-width: 400px)' ),
),
'skinStyles' => array(
'default' => 'quux-fallback.less',
'vector' => array(
'baz-vector.css',
'quux-vector.less',
),
),
'messages' => array(
'hello',
'world',
),
);
$module = new ResourceLoaderFileModule( $baseParams );
$this->assertEquals(
array(
'foo.css',
'baz-vector.css',
'quux-vector.less',
'quux-fallback.less',
'bar.css',
'screen.less',
'screen-query.css',
),
array_map( 'basename', $module->getAllStyleFiles() )
);
}
/**
* @covers ResourceLoaderModule::getDefinitionSummary
* @covers ResourceLoaderFileModule::getDefinitionSummary
*/
public function testDefinitionSummary() {
$context = self::getResourceLoaderContext();
$baseParams = array(
'scripts' => array( 'foo.js', 'bar.js' ),
'dependencies' => array( 'jquery', 'mediawiki' ),
'messages' => array( 'hello', 'world' ),
);
$module = new ResourceLoaderFileModule( $baseParams );
$jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
// Exactly the same
$module = new ResourceLoaderFileModule( $baseParams );
$this->assertEquals(
$jsonSummary,
json_encode( $module->getDefinitionSummary( $context ) ),
'Instance is insignificant'
);
// Re-order dependencies
$module = new ResourceLoaderFileModule( array(
'dependencies' => array( 'mediawiki', 'jquery' ),
) + $baseParams );
$this->assertEquals(
$jsonSummary,
json_encode( $module->getDefinitionSummary( $context ) ),
'Order of dependencies is insignificant'
);
// Re-order messages
$module = new ResourceLoaderFileModule( array(
'messages' => array( 'world', 'hello' ),
) + $baseParams );
$this->assertEquals(
$jsonSummary,
json_encode( $module->getDefinitionSummary( $context ) ),
'Order of messages is insignificant'
);
// Re-order scripts
$module = new ResourceLoaderFileModule( array(
'scripts' => array( 'bar.js', 'foo.js' ),
) + $baseParams );
$this->assertNotEquals(
$jsonSummary,
json_encode( $module->getDefinitionSummary( $context ) ),
'Order of scripts is significant'
);
// Subclass
$module = new ResourceLoaderFileModuleTestModule( $baseParams );
$this->assertNotEquals(
$jsonSummary,
json_encode( $module->getDefinitionSummary( $context ) ),
'Class is significant'
);
}
}