Merge "resourceloader: Remove $wgResourceLoaderLESSVars support"
[lhc/web/wiklou.git] / tests / phpunit / includes / resourceloader / ResourceLoaderStartUpModuleTest.php
index ca4fb34..86956f2 100644 (file)
@@ -463,7 +463,7 @@ mw.loader.register( [
                        $this->setMwGlobals( 'wgResourceLoaderSources', $case['sources'] );
                }
 
-               $extraQuery = isset( $case['extraQuery'] ) ? $case['extraQuery'] : [];
+               $extraQuery = $case['extraQuery'] ?? [];
                $context = $this->getResourceLoaderContext( $extraQuery );
                $rl = $context->getResourceLoader();
                $rl->register( $case['modules'] );
@@ -561,4 +561,77 @@ mw.loader.register( [
                );
        }
 
+       /**
+        * @covers ResourceLoaderStartupModule::getDefinitionSummary
+        */
+       public function testGetVersionHash_varyConfig() {
+               $context = $this->getResourceLoaderContext();
+
+               $this->setMwGlobals( 'wgArticlePath', '/w1' );
+               $module = new ResourceLoaderStartupModule();
+               $version1 = $module->getVersionHash( $context );
+               $module = new ResourceLoaderStartupModule();
+               $version2 = $module->getVersionHash( $context );
+               $this->setMwGlobals( 'wgArticlePath', '/w3' );
+               $module = new ResourceLoaderStartupModule();
+               $version3 = $module->getVersionHash( $context );
+
+               $this->assertEquals(
+                       $version1,
+                       $version2,
+                       'Deterministic version hash'
+               );
+
+               $this->assertNotEquals(
+                       $version1,
+                       $version3,
+                       'Config change impacts version hash'
+               );
+       }
+
+       /**
+        * @covers ResourceLoaderStartupModule::getAllModuleHashes
+        * @covers ResourceLoaderStartupModule::getDefinitionSummary
+        */
+       public function testGetVersionHash_varyModule() {
+               $context1 = $this->getResourceLoaderContext();
+               $rl1 = $context1->getResourceLoader();
+               $rl1->register( [
+                       'test.a' => new ResourceLoaderTestModule(),
+                       'test.b' => new ResourceLoaderTestModule(),
+               ] );
+               $module = new ResourceLoaderStartupModule();
+               $version1 = $module->getVersionHash( $context1 );
+
+               $context2 = $this->getResourceLoaderContext();
+               $rl2 = $context2->getResourceLoader();
+               $rl2->register( [
+                       'test.b' => new ResourceLoaderTestModule(),
+                       'test.c' => new ResourceLoaderTestModule(),
+               ] );
+               $module = new ResourceLoaderStartupModule();
+               $version2 = $module->getVersionHash( $context2 );
+
+               $context3 = $this->getResourceLoaderContext();
+               $rl3 = $context3->getResourceLoader();
+               $rl3->register( [
+                       'test.a' => new ResourceLoaderTestModule(),
+                       'test.b' => new ResourceLoaderTestModule( [ 'script' => 'different' ] ),
+               ] );
+               $module = new ResourceLoaderStartupModule();
+               $version3 = $module->getVersionHash( $context3 );
+
+               $this->assertEquals(
+                       $version1,
+                       $version2,
+                       'Module name is insignificant'
+               );
+
+               $this->assertNotEquals(
+                       $version1,
+                       $version3,
+                       'Hash change of any module impacts startup hash'
+               );
+       }
+
 }