X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FOutputPageTest.php;h=32fa46887debe526f2bd84ae5332fd1d66724c3c;hb=e087f9a1ccd7e79725afe7a299f598b7bfc9640d;hp=97df585f8b0ad1f768702940e4acd846f6d302a2;hpb=2ecb96a96fdd62b2521b6d9ac2d5e2dac0eba0ec;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/OutputPageTest.php b/tests/phpunit/includes/OutputPageTest.php index 97df585f8b..32fa46887d 100644 --- a/tests/phpunit/includes/OutputPageTest.php +++ b/tests/phpunit/includes/OutputPageTest.php @@ -344,6 +344,88 @@ class OutputPageTest extends MediaWikiTestCase { $this->assertEquals( $expectedHtml, $actualHtml ); } + public static function provideBuildExemptModules() { + return [ + 'empty' => [ + 'exemptStyleModules' => [], + '', + ], + 'empty sets' => [ + 'exemptStyleModules' => [ 'site' => [], 'noscript' => [], 'private' => [], 'user' => [] ], + '', + ], + // @codingStandardsIgnoreStart Generic.Files.LineLength + 'default logged-out' => [ + 'exemptStyleModules' => [ 'site' => [ 'site.styles' ] ], + '' . "\n" . + '', + ], + 'default logged-in' => [ + 'exemptStyleModules' => [ 'site' => [ 'site.styles' ], 'user' => [ 'user.styles' ] ], + '' . "\n" . + '' . "\n" . + '', + ], + 'custom modules' => [ + 'exemptStyleModules' => [ + 'site' => [ 'site.styles', 'example.site.a', 'example.site.b' ], + 'user' => [ 'user.styles', 'example.user' ], + ], + '' . "\n" . + '' . "\n" . + '' . "\n" . + '' . "\n" . + '', + ], + // @codingStandardsIgnoreEnd Generic.Files.LineLength + ]; + } + + /** + * @dataProvider provideBuildExemptModules + * @covers OutputPage::buildExemptModules + */ + public function testBuildExemptModules( array $exemptStyleModules, $expect ) { + $this->setMwGlobals( [ + 'wgResourceLoaderDebug' => false, + 'wgLoadScript' => '/w/load.php', + // Stub wgCacheEpoch as it influences getVersionHash used for the + // urls in the expected HTML + 'wgCacheEpoch' => '20140101000000', + ] ); + + // Set up stubs + $ctx = new RequestContext(); + $ctx->setSkin( SkinFactory::getDefaultInstance()->makeSkin( 'fallback' ) ); + $ctx->setLanguage( 'en' ); + $outputPage = $this->getMockBuilder( 'OutputPage' ) + ->setConstructorArgs( [ $ctx ] ) + ->setMethods( [ 'isUserCssPreview', 'buildCssLinksArray' ] ) + ->getMock(); + $outputPage->expects( $this->any() ) + ->method( 'isUserCssPreview' ) + ->willReturn( false ); + $outputPage->expects( $this->any() ) + ->method( 'buildCssLinksArray' ) + ->willReturn( [] ); + $rl = $outputPage->getResourceLoader(); + $rl->setMessageBlobStore( new NullMessageBlobStore() ); + + // Register custom modules + $rl->register( [ + 'example.site.a' => new ResourceLoaderTestModule( [ 'group' => 'site' ] ), + 'example.site.b' => new ResourceLoaderTestModule( [ 'group' => 'site' ] ), + 'example.user' => new ResourceLoaderTestModule( [ 'group' => 'user' ] ), + ] ); + + $outputPage = TestingAccessWrapper::newFromObject( $outputPage ); + $outputPage->rlExemptStyleModules = $exemptStyleModules; + $this->assertEquals( + $expect, + strval( $outputPage->buildExemptModules() ) + ); + } + /** * @dataProvider provideVaryHeaders * @covers OutputPage::addVaryHeader