X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/exercices/bilan.php?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fresourceloader%2FResourceLoaderWikiModuleTest.php;h=0aa37d23d3a872a2bf433744c7950565745ea10f;hb=45da5815517c408bafed6b3744766860afdcd7b8;hp=5cab8e2ff6d3e05f1c8e8978d9aef58fcce61bba;hpb=2c8f7978df47f338ee6e245e3efba6175ba425e9;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php index 5cab8e2ff6..0aa37d23d3 100644 --- a/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php +++ b/tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php @@ -2,6 +2,7 @@ use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IDatabase; +use Wikimedia\TestingAccessWrapper; class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { @@ -11,7 +12,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { */ public function testConstructor( $params ) { $module = new ResourceLoaderWikiModule( $params ); - $this->assertInstanceOf( 'ResourceLoaderWikiModule', $module ); + $this->assertInstanceOf( ResourceLoaderWikiModule::class, $module ); } public static function provideConstructor() { @@ -96,7 +97,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { * @dataProvider provideIsKnownEmpty */ public function testIsKnownEmpty( $titleInfo, $group, $expected ) { - $module = $this->getMockBuilder( 'ResourceLoaderWikiModule' ) + $module = $this->getMockBuilder( ResourceLoaderWikiModule::class ) ->setMethods( [ 'getTitleInfo', 'getGroup' ] ) ->getMock(); $module->expects( $this->any() ) @@ -105,7 +106,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { $module->expects( $this->any() ) ->method( 'getGroup' ) ->will( $this->returnValue( $group ) ); - $context = $this->getMockBuilder( 'ResourceLoaderContext' ) + $context = $this->getMockBuilder( ResourceLoaderContext::class ) ->disableOriginalConstructor() ->getMock(); $this->assertEquals( $expected, $module->isKnownEmpty( $context ) ); @@ -156,14 +157,14 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { ]; $expected = $titleInfo; - $module = $this->getMockBuilder( 'TestResourceLoaderWikiModule' ) + $module = $this->getMockBuilder( TestResourceLoaderWikiModule::class ) ->setMethods( [ 'getPages' ] ) ->getMock(); $module->method( 'getPages' )->willReturn( $pages ); // Can't mock static methods $module::$returnFetchTitleInfo = $titleInfo; - $context = $this->getMockBuilder( 'ResourceLoaderContext' ) + $context = $this->getMockBuilder( ResourceLoaderContext::class ) ->disableOriginalConstructor() ->getMock(); @@ -191,7 +192,7 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { ]; $expected = $titleInfo; - $module = $this->getMockBuilder( 'TestResourceLoaderWikiModule' ) + $module = $this->getMockBuilder( TestResourceLoaderWikiModule::class ) ->setMethods( [ 'getPages' ] ) ->getMock(); $module->method( 'getPages' )->willReturn( $pages ); @@ -218,13 +219,119 @@ class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase { $this->assertEquals( $expected, $module->getTitleInfo( $context ), 'Title info' ); } + /** + * @covers ResourceLoaderWikiModule::preloadTitleInfo + */ + public function testGetPreloadedBadTitle() { + // Mock values + $pages = [ + // Covers else branch for invalid page name + '[x]' => [ 'type' => 'styles' ], + ]; + $titleInfo = []; + + // Set up objects + $module = $this->getMockBuilder( TestResourceLoaderWikiModule::class ) + ->setMethods( [ 'getPages' ] ) ->getMock(); + $module->method( 'getPages' )->willReturn( $pages ); + $module::$returnFetchTitleInfo = $titleInfo; + $rl = new EmptyResourceLoader(); + $rl->register( 'testmodule', $module ); + $context = new ResourceLoaderContext( $rl, new FauxRequest() ); + + // Act + TestResourceLoaderWikiModule::preloadTitleInfo( + $context, + wfGetDB( DB_REPLICA ), + [ 'testmodule' ] + ); + + // Assert + $module = TestingAccessWrapper::newFromObject( $module ); + $this->assertEquals( $titleInfo, $module->getTitleInfo( $context ), 'Title info' ); + } + + /** + * @covers ResourceLoaderWikiModule::preloadTitleInfo + */ + public function testGetPreloadedTitleInfoEmpty() { + $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest() ); + // Covers early return + $this->assertSame( + null, + ResourceLoaderWikiModule::preloadTitleInfo( + $context, + wfGetDB( DB_REPLICA ), + [] + ) + ); + } + + public static function provideGetContent() { + return [ + 'Bad title' => [ null, '[x]' ], + 'Dead redirect' => [ null, [ + 'text' => 'Dead redirect', + 'title' => 'Dead_redirect', + 'redirect' => 1, + ] ], + 'Bad content model' => [ null, [ + 'text' => 'MediaWiki:Wikitext', + 'ns' => NS_MEDIAWIKI, + 'title' => 'Wikitext', + ] ], + 'No JS content found' => [ null, [ + 'text' => 'MediaWiki:Script.js', + 'ns' => NS_MEDIAWIKI, + 'title' => 'Script.js', + ] ], + 'No CSS content found' => [ null, [ + 'text' => 'MediaWiki:Styles.css', + 'ns' => NS_MEDIAWIKI, + 'title' => 'Script.css', + ] ], + ]; + } + + /** + * @covers ResourceLoaderWikiModule::getContent + * @dataProvider provideGetContent + */ + public function testGetContent( $expected, $title ) { + $context = $this->getResourceLoaderContext( [], new EmptyResourceLoader ); + $module = $this->getMockBuilder( ResourceLoaderWikiModule::class ) + ->setMethods( [ 'getContentObj' ] ) ->getMock(); + $module->expects( $this->any() ) + ->method( 'getContentObj' )->willReturn( null ); + + if ( is_array( $title ) ) { + $title += [ 'ns' => NS_MAIN, 'id' => 1, 'len' => 1, 'redirect' => 0 ]; + $titleText = $title['text']; + // Mock Title db access via LinkCache + MediaWikiServices::getInstance()->getLinkCache()->addGoodLinkObj( + $title['id'], + new TitleValue( $title['ns'], $title['title'] ), + $title['len'], + $title['redirect'] + ); + } else { + $titleText = $title; + } + + $module = TestingAccessWrapper::newFromObject( $module ); + $this->assertEquals( + $expected, + $module->getContent( $titleText ) + ); + } + /** * @covers ResourceLoaderWikiModule::getContent */ public function testGetContentForRedirects() { // Set up context and module object $context = $this->getResourceLoaderContext( [], new EmptyResourceLoader ); - $module = $this->getMockBuilder( 'ResourceLoaderWikiModule' ) + $module = $this->getMockBuilder( ResourceLoaderWikiModule::class ) ->setMethods( [ 'getPages', 'getContentObj' ] ) ->getMock(); $module->expects( $this->any() )