http://www.mediawiki.org/wiki/Special:Code/MediaWiki/74012

Revision: 74012
Author:   tparscal
Date:     2010-09-30 06:54:23 +0000 (Thu, 30 Sep 2010)

Log Message:
-----------
Added some content for basic unit tests for ResourceLoader class.

Modified Paths:
--------------
    trunk/phase3/maintenance/tests/phpunit/includes/ResourceLoaderTest.php

Modified: trunk/phase3/maintenance/tests/phpunit/includes/ResourceLoaderTest.php
===================================================================
--- trunk/phase3/maintenance/tests/phpunit/includes/ResourceLoaderTest.php      
2010-09-30 02:30:06 UTC (rev 74011)
+++ trunk/phase3/maintenance/tests/phpunit/includes/ResourceLoaderTest.php      
2010-09-30 06:54:23 UTC (rev 74012)
@@ -2,15 +2,70 @@
 
 class ResourceLoaderTest extends PHPUnit_Framework_TestCase {
 
+       protected static $resourceLoaderRegisterModulesHook;
+       
+       /* Hook Methods */
+
+       /**
+        * ResourceLoaderRegisterModules hook
+        */
+       public static function resourceLoaderRegisterModules( &$resourceLoader 
) {
+               self::$resourceLoaderRegisterModulesHook = true;
+               return true;
+       }
+
        /* Provider Methods */
 
-       public function provide() {
-
+       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



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to