From: Trevor Parscal Date: Thu, 30 Sep 2010 06:54:23 +0000 (+0000) Subject: Added some content for basic unit tests for ResourceLoader class. X-Git-Tag: 1.31.0-rc.0~34726 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=833fd18190bebc2e8e3809af91deb4a773bd559d;p=lhc%2Fweb%2Fwiklou.git Added some content for basic unit tests for ResourceLoader class. --- diff --git a/maintenance/tests/phpunit/includes/ResourceLoaderTest.php b/maintenance/tests/phpunit/includes/ResourceLoaderTest.php index 98f5f0a098..dbb529b845 100644 --- a/maintenance/tests/phpunit/includes/ResourceLoaderTest.php +++ b/maintenance/tests/phpunit/includes/ResourceLoaderTest.php @@ -2,15 +2,70 @@ class ResourceLoaderTest extends PHPUnit_Framework_TestCase { - /* Provider Methods */ + protected static $resourceLoaderRegisterModulesHook; + + /* Hook Methods */ + + /** + * ResourceLoaderRegisterModules hook + */ + public static function resourceLoaderRegisterModules( &$resourceLoader ) { + self::$resourceLoaderRegisterModulesHook = true; + return true; + } - public function provide() { + /* Provider Methods */ + public function provideValidModules() { + return array( + array( 'TEST.validModule1', new ResourceLoaderTestModule() ), + ); } /* Test Methods */ + + /** + * Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed + * @covers ResourceLoader::__construct + */ + public function testCreatingNewResourceLoaderCallsRegistrationHook() { + self::$resourceLoaderRegisterModulesHook = false; + $resourceLoader = new ResourceLoader(); + $this->assertTrue( self::$resourceLoaderRegisterModulesHook ); + return $resourceLoader; + } - public function test() { - + /** + * @dataProvider provideValidModules + * @depends testCreatingNewResourceLoaderCallsRegistrationHook + * @covers ResourceLoader::register + * @covers ResourceLoader::getModule + */ + public function testRegisteredValidModulesAreAccessible( + $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader + ) { + $resourceLoader->register( $name, $module ); + $this->assertEquals( $module, $resourceLoader->getModule( $name ) ); + } + + /** + * Allthough ResourceLoader::register uses type hinting to prevent arbitrary information being passed through as a + * ResourceLoaderModule object, null can still get through. + * + * @depends testCreatingNewResourceLoaderCallsRegistrationHook + * @covers ResourceLoader::register + * @covers ResourceLoader::getModule + * @expectedException MWException + */ + public function testRegisteringNullModuleThrowsAnException( ResourceLoader $resourceLoader ) { + $resourceLoader->register( 'TEST.nullModule', null ); } } + +/* Stubs */ + +class ResourceLoaderTestModule extends ResourceLoaderModule { } + +/* Hooks */ + +$wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules'; \ No newline at end of file