X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fresourceloader%2FResourceLoaderModuleTest.php;h=6057b9710bafd49db8b8a9040de11b4b8a56929b;hp=3f2a5e2558ca0dc914439bad70e873d25b83f175;hb=203cedd029e42bd3c55e50a9cff6f14373d8aa67;hpb=2ce2177e50b6e97062210a78867fc63e105e0d00 diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php index 3f2a5e2558..6057b9710b 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php @@ -8,11 +8,11 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { public function testGetVersionHash() { $context = $this->getResourceLoaderContext(); - $baseParams = array( - 'scripts' => array( 'foo.js', 'bar.js' ), - 'dependencies' => array( 'jquery', 'mediawiki' ), - 'messages' => array( 'hello', 'world' ), - ); + $baseParams = [ + 'scripts' => [ 'foo.js', 'bar.js' ], + 'dependencies' => [ 'jquery', 'mediawiki' ], + 'messages' => [ 'hello', 'world' ], + ]; $module = new ResourceLoaderFileModule( $baseParams ); $version = json_encode( $module->getVersionHash( $context ) ); @@ -26,9 +26,9 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { ); // Re-order dependencies - $module = new ResourceLoaderFileModule( array( - 'dependencies' => array( 'mediawiki', 'jquery' ), - ) + $baseParams ); + $module = new ResourceLoaderFileModule( [ + 'dependencies' => [ 'mediawiki', 'jquery' ], + ] + $baseParams ); $this->assertEquals( $version, json_encode( $module->getVersionHash( $context ) ), @@ -36,9 +36,9 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { ); // Re-order messages - $module = new ResourceLoaderFileModule( array( - 'messages' => array( 'world', 'hello' ), - ) + $baseParams ); + $module = new ResourceLoaderFileModule( [ + 'messages' => [ 'world', 'hello' ], + ] + $baseParams ); $this->assertEquals( $version, json_encode( $module->getVersionHash( $context ) ), @@ -46,9 +46,9 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { ); // Re-order scripts - $module = new ResourceLoaderFileModule( array( - 'scripts' => array( 'bar.js', 'foo.js' ), - ) + $baseParams ); + $module = new ResourceLoaderFileModule( [ + 'scripts' => [ 'bar.js', 'foo.js' ], + ] + $baseParams ); $this->assertNotEquals( $version, json_encode( $module->getVersionHash( $context ) ), @@ -72,28 +72,74 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { $context = $this->getResourceLoaderContext(); - $module = new ResourceLoaderTestModule( array( + $module = new ResourceLoaderTestModule( [ 'script' => "var a = 'this is';\n {\ninvalid" - ) ); + ] ); $this->assertEquals( - $module->getScript( $context ), 'mw.log.error(' . '"JavaScript parse error: Parse error: Unexpected token; ' . 'token } expected in file \'input\' on line 3"' . ');', + $module->getScript( $context ), 'Replace invalid syntax with error logging' ); - $module = new ResourceLoaderTestModule( array( + $module = new ResourceLoaderTestModule( [ 'script' => "\n'valid';" - ) ); + ] ); $this->assertEquals( - $module->getScript( $context ), "\n'valid';", + $module->getScript( $context ), 'Leave valid scripts as-is' ); } + public static function provideBuildContentScripts() { + return [ + [ + "mw.foo()", + "mw.foo();\n", + ], + [ + "mw.foo();", + "mw.foo();", + ], + [ + "mw.foo();\n", + "mw.foo();\n", + ], + [ + "mw.foo()\n", + "mw.foo()\n;\n", + ], + [ + "mw.foo()\n// mw.bar();", + "mw.foo()\n// mw.bar();", + ], + [ + "mw.foo()// mw.bar();", + "mw.foo()// mw.bar();", + ], + ]; + } + + /** + * @dataProvider provideBuildContentScripts + * @covers ResourceLoaderModule::buildContent + */ + public function testBuildContentScripts( $raw, $build, $message = null ) { + $context = $this->getResourceLoaderContext(); + $module = new ResourceLoaderTestModule( [ + 'script' => $raw + ] ); + $this->assertEquals( $raw, $module->getScript( $context ), 'Raw script' ); + $this->assertEquals( + [ 'scripts' => $build ], + $module->getModuleContent( $context ), + $message + ); + } + /** * @covers ResourceLoaderModule::getRelativePaths * @covers ResourceLoaderModule::expandRelativePaths @@ -104,29 +150,29 @@ class ResourceLoaderModuleTest extends ResourceLoaderTestCase { $expandRelativePaths = new ReflectionMethod( 'ResourceLoaderModule', 'expandRelativePaths' ); $expandRelativePaths->setAccessible( true ); - $this->setMwGlobals( array( + $this->setMwGlobals( [ 'IP' => '/srv/example/mediawiki/core', - ) ); - $raw = array( + ] ); + $raw = [ '/srv/example/mediawiki/core/resources/foo.js', '/srv/example/mediawiki/core/extensions/Example/modules/bar.js', '/srv/example/mediawiki/skins/Example/baz.css', '/srv/example/mediawiki/skins/Example/images/quux.png', - ); - $canonical = array( + ]; + $canonical = [ 'resources/foo.js', 'extensions/Example/modules/bar.js', '../skins/Example/baz.css', '../skins/Example/images/quux.png', - ); + ]; $this->assertEquals( - $getRelativePaths->invoke( null, $raw ), $canonical, + $getRelativePaths->invoke( null, $raw ), 'Insert placeholders' ); $this->assertEquals( - $expandRelativePaths->invoke( null, $canonical ), $raw, + $expandRelativePaths->invoke( null, $canonical ), 'Substitute placeholders' ); }