aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php
diff options
context:
space:
mode:
authorTim Starling <tstarling@wikimedia.org>2022-05-06 19:09:56 +1000
committerTim Starling <tstarling@wikimedia.org>2022-05-16 14:41:27 +1000
commite08ea8ccb9932f9924a613056afcb2d01c8c7b39 (patch)
tree6255aeccef4fe82e5cbf425aea42d6c891c55b7b /tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php
parent5029306c80fa804fe09c27bf12b7b46599fdc556 (diff)
downloadmediawikicore-e08ea8ccb9932f9924a613056afcb2d01c8c7b39.tar.gz
mediawikicore-e08ea8ccb9932f9924a613056afcb2d01c8c7b39.zip
ResourceLoader namespace
Move ResourceLoader classes to their own namespace. Strip the "ResourceLoader" prefix from all except ResourceLoader and ResourceLoaderContext. Move the tests by analogy. I used a namespace alias "RL" in some callers since RL\Module is less ambiguous at the call site than just "Module". I did not address DependencyStore which continues to have a non-standard location and namespace. Change-Id: I92998ae6a82e0b935c13e02a183e7c324fa410a3
Diffstat (limited to 'tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php')
-rw-r--r--tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php79
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php b/tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php
new file mode 100644
index 000000000000..e025b49c5462
--- /dev/null
+++ b/tests/phpunit/includes/ResourceLoader/LessVarFileModuleTest.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace MediaWiki\Tests\ResourceLoader;
+
+use MediaWiki\ResourceLoader\LessVarFileModule;
+use ReflectionMethod;
+use ResourceLoaderTestCase;
+
+/**
+ * @group ResourceLoader
+ * @covers \MediaWiki\ResourceLoader\LessVarFileModule
+ */
+class LessVarFileModuleTest extends ResourceLoaderTestCase {
+
+ public static function providerWrapAndEscapeMessage() {
+ return [
+ [
+ "Foo", '"Foo"',
+ ],
+ [
+ "Foo bananas", '"Foo bananas"',
+ ],
+ [
+ "Who's that test? Who's that test? It's Jess!",
+ '"Who\\\'s that test? Who\\\'s that test? It\\\'s Jess!"',
+ ],
+ [
+ 'Hello "he" said',
+ '"Hello \"he\" said"',
+ ],
+ [
+ 'boo";-o-link:javascript:alert(1);color:red;content:"',
+ '"boo\";-o-link:javascript:alert(1);color:red;content:\""',
+ ],
+ [
+ '"jon\'s"',
+ '"\"jon\\\'s\""'
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider providerWrapAndEscapeMessage
+ * @covers \MediaWiki\ResourceLoader\LessVarFileModule::wrapAndEscapeMessage
+ */
+ public function testEscapeMessage( $msg, $expected ) {
+ $method = new ReflectionMethod( LessVarFileModule::class, 'wrapAndEscapeMessage' );
+ $method->setAccessible( true );
+ $this->assertEquals( $expected, $method->invoke( null, $msg ) );
+ }
+
+ public function testLessMessagesFound() {
+ $context = $this->getResourceLoaderContext( 'qqx' );
+ $basePath = __DIR__ . '/../../data/less';
+ $module = new LessVarFileModule( [
+ 'localBasePath' => $basePath,
+ 'styles' => [ 'less-messages.less' ],
+ 'lessMessages' => [ 'pieday' ],
+ ] );
+ $module->setMessageBlob( '{"pieday":"March 14"}', 'qqx' );
+
+ $styles = $module->getStyles( $context );
+ $this->assertStringEqualsFile( $basePath . '/less-messages-exist.css', $styles['all'] );
+ }
+
+ public function testLessMessagesFailGraceful() {
+ $context = $this->getResourceLoaderContext( 'qqx' );
+ $basePath = __DIR__ . '/../../data/less';
+ $module = new LessVarFileModule( [
+ 'localBasePath' => $basePath,
+ 'styles' => [ 'less-messages.less' ],
+ 'lessMessages' => [ 'pieday' ],
+ ] );
+ $module->setMessageBlob( '{"something":"Else"}', 'qqx' );
+
+ $styles = $module->getStyles( $context );
+ $this->assertStringEqualsFile( $basePath . '/less-messages-nonexist.css', $styles['all'] );
+ }
+}