const BLANK_VERSION = '09p30q0';
/**
- * @param string $lang
- * @param string $dir
+ * @param array|string $options Language code or options array
+ * - string 'lang' Language code
+ * - string 'dir' Language direction (ltr or rtl)
* @return ResourceLoaderContext
*/
- protected function getResourceLoaderContext( $lang = 'en', $dir = 'ltr' ) {
+ protected function getResourceLoaderContext( $options = [] ) {
+ if ( is_string( $options ) ) {
+ // Back-compat for extension tests
+ $options = [ 'lang' => $options ];
+ }
+ $options += [
+ 'lang' => 'en',
+ 'dir' => 'ltr',
+ ];
$resourceLoader = new ResourceLoader();
$request = new FauxRequest( [
- 'lang' => $lang,
+ 'lang' => $options['lang'],
'modules' => 'startup',
'only' => 'scripts',
'skin' => 'vector',
->setConstructorArgs( [ $resourceLoader, $request ] )
->setMethods( [ 'getDirection' ] )
->getMock();
- $ctx->method( 'getDirection' )->willReturn( $dir );
+ $ctx->method( 'getDirection' )->willReturn( $options['dir'] );
return $ctx;
}
$modules = self::getModules();
$rl = new ResourceLoaderFileModule( $modules[$name] );
$rl->setName( $name );
- $ctx = $this->getResourceLoaderContext( 'en', 'ltr' );
+ $ctx = $this->getResourceLoaderContext();
$this->assertEquals( $rl->getScript( $ctx ), $expected );
}
] );
$expectedModule->setName( 'testing' );
- $contextLtr = $this->getResourceLoaderContext( 'en', 'ltr' );
- $contextRtl = $this->getResourceLoaderContext( 'he', 'rtl' );
+ $contextLtr = $this->getResourceLoaderContext( [
+ 'lang' => 'en',
+ 'dir' => 'ltr',
+ ] );
+ $contextRtl = $this->getResourceLoaderContext( [
+ 'lang' => 'he',
+ 'dir' => 'rtl',
+ ] );
// Since we want to compare the effect of @noflip+@embed against the effect of just @embed, and
// the @noflip annotations are always preserved, we need to strip them first.
'File has leading BOM'
);
- $contextLtr = $this->getResourceLoaderContext( 'en', 'ltr' );
+ $context = $this->getResourceLoaderContext();
$this->assertEquals(
- $testModule->getStyles( $contextLtr ),
+ $testModule->getStyles( $context ),
[ 'all' => ".efbbbf_bom_char_at_start_of_file {}\n" ],
'Leading BOM removed when concatenating files'
);
static $contexts = [];
$image = $this->getTestImage( $imageName );
- $context = $this->getResourceLoaderContext( $languageCode, $dirMap[$languageCode] );
+ $context = $this->getResourceLoaderContext( [
+ 'lang' => $languageCode,
+ 'dir' => $dirMap[$languageCode],
+ ] );
$this->assertEquals( $image->getPath( $context ), $this->imagesPath . '/' . $path );
}
* @covers ResourceLoaderImage::massageSvgPathdata
*/
public function testGetImageData() {
- $context = $this->getResourceLoaderContext( 'en', 'ltr' );
+ $context = $this->getResourceLoaderContext();
$image = $this->getTestImage( 'remove' );
$data = file_get_contents( $this->imagesPath . '/remove.svg' );