From 833fd18190bebc2e8e3809af91deb4a773bd559d Mon Sep 17 00:00:00 2001 From: Trevor Parscal Date: Thu, 30 Sep 2010 06:54:23 +0000 Subject: [PATCH] Added some content for basic unit tests for ResourceLoader class. --- .../phpunit/includes/ResourceLoaderTest.php | 63 +++++++++++++++++-- 1 file changed, 59 insertions(+), 4 deletions(-) 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 -- 2.20.1