(bug 37209) Make TextContentTest and WikitextContentTest work in all cases
[lhc/web/wiklou.git] / tests / phpunit / includes / ResourceLoaderTest.php
1 <?php
2
3 class ResourceLoaderTest extends MediaWikiTestCase {
4
5 protected static $resourceLoaderRegisterModulesHook;
6
7 /* Hook Methods */
8
9 /**
10 * ResourceLoaderRegisterModules hook
11 */
12 public static function resourceLoaderRegisterModules( &$resourceLoader ) {
13 self::$resourceLoaderRegisterModulesHook = true;
14 return true;
15 }
16
17 /* Provider Methods */
18 public static function provideValidModules() {
19 return array(
20 array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
21 );
22 }
23
24 /* Test Methods */
25
26 /**
27 * Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed
28 * @covers ResourceLoader::__construct
29 */
30 public function testCreatingNewResourceLoaderCallsRegistrationHook() {
31 self::$resourceLoaderRegisterModulesHook = false;
32 $resourceLoader = new ResourceLoader();
33 $this->assertTrue( self::$resourceLoaderRegisterModulesHook );
34 return $resourceLoader;
35 }
36
37 /**
38 * @dataProvider provideValidModules
39 * @depends testCreatingNewResourceLoaderCallsRegistrationHook
40 * @covers ResourceLoader::register
41 * @covers ResourceLoader::getModule
42 */
43 public function testRegisteredValidModulesAreAccessible(
44 $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader
45 ) {
46 $resourceLoader->register( $name, $module );
47 $this->assertEquals( $module, $resourceLoader->getModule( $name ) );
48 }
49
50 /**
51 * @dataProvider providePackedModules
52 */
53 public function testMakePackedModulesString( $desc, $modules, $packed ) {
54 $this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc );
55 }
56
57 /**
58 * @dataProvider providePackedModules
59 */
60 public function testexpandModuleNames( $desc, $modules, $packed ) {
61 $this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc );
62 }
63
64 public static function providePackedModules() {
65 return array(
66 array(
67 'Example from makePackedModulesString doc comment',
68 array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ),
69 'foo.bar,baz|bar.baz,quux',
70 ),
71 array(
72 'Example from expandModuleNames doc comment',
73 array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ),
74 'jquery.foo,bar|jquery.ui.baz,quux',
75 ),
76 array(
77 'Regression fixed in r88706 with dotless names',
78 array( 'foo', 'bar', 'baz' ),
79 'foo,bar,baz',
80 )
81 );
82 }
83 }
84
85 /* Stubs */
86
87 class ResourceLoaderTestModule extends ResourceLoaderModule { }
88
89 /* Hooks */
90 global $wgHooks;
91 $wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';