Use ::class to resolve class names in tests
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiModuleManagerTest.php
index 201eed1..b01b90e 100644 (file)
@@ -20,30 +20,30 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
        }
 
        public function addModuleProvider() {
-               return array(
-                       'plain class' => array(
+               return [
+                       'plain class' => [
                                'login',
                                'action',
-                               'ApiLogin',
+                               ApiLogin::class,
                                null,
-                       ),
+                       ],
 
-                       'with factory' => array(
+                       'with factory' => [
                                'login',
                                'action',
-                               'ApiLogin',
-                               array( $this, 'newApiLogin' ),
-                       ),
+                               ApiLogin::class,
+                               [ $this, 'newApiLogin' ],
+                       ],
 
-                       'with closure' => array(
+                       'with closure' => [
                                'logout',
                                'action',
-                               'ApiLogout',
+                               ApiLogout::class,
                                function ( ApiMain $main, $action ) {
                                        return new ApiLogout( $main, $action );
                                },
-                       ),
-               );
+                       ],
+               ];
        }
 
        /**
@@ -58,36 +58,36 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
        }
 
        public function addModulesProvider() {
-               return array(
-                       'empty' => array(
-                               array(),
+               return [
+                       'empty' => [
+                               [],
                                'action',
-                       ),
+                       ],
 
-                       'simple' => array(
-                               array(
-                                       'login' => 'ApiLogin',
-                                       'logout' => 'ApiLogout',
-                               ),
+                       'simple' => [
+                               [
+                                       'login' => ApiLogin::class,
+                                       'logout' => ApiLogout::class,
+                               ],
                                'action',
-                       ),
-
-                       'with factories' => array(
-                               array(
-                                       'login' => array(
-                                               'class' => 'ApiLogin',
-                                               'factory' => array( $this, 'newApiLogin' ),
-                                       ),
-                                       'logout' => array(
-                                               'class' => 'ApiLogout',
+                       ],
+
+                       'with factories' => [
+                               [
+                                       'login' => [
+                                               'class' => ApiLogin::class,
+                                               'factory' => [ $this, 'newApiLogin' ],
+                                       ],
+                                       'logout' => [
+                                               'class' => ApiLogout::class,
                                                'factory' => function ( ApiMain $main, $action ) {
                                                        return new ApiLogout( $main, $action );
                                                },
-                                       ),
-                               ),
+                                       ],
+                               ],
                                'action',
-                       ),
-               );
+                       ],
+               ];
        }
 
        /**
@@ -106,49 +106,50 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
        }
 
        public function getModuleProvider() {
-               $modules = array(
-                       'feedrecentchanges' => 'ApiFeedRecentChanges',
-                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
-                       'login' => array(
-                               'class' => 'ApiLogin',
-                               'factory' => array( $this, 'newApiLogin' ),
-                       ),
-                       'logout' => array(
-                               'class' => 'ApiLogout',
+               $modules = [
+                       'feedrecentchanges' => ApiFeedRecentChanges::class,
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'login' => [
+                               'class' => ApiLogin::class,
+                               'factory' => [ $this, 'newApiLogin' ],
+                       ],
+                       'logout' => [
+                               'class' => ApiLogout::class,
                                'factory' => function ( ApiMain $main, $action ) {
                                        return new ApiLogout( $main, $action );
                                },
-                       ),
-               );
+                       ],
+               ];
 
-               return array(
-                       'legacy entry' => array(
+               return [
+                       'legacy entry' => [
                                $modules,
                                'feedrecentchanges',
-                               'ApiFeedRecentChanges',
-                       ),
+                               ApiFeedRecentChanges::class,
+                       ],
 
-                       'just a class' => array(
+                       'just a class' => [
                                $modules,
                                'feedcontributions',
-                               'ApiFeedContributions',
-                       ),
+                               ApiFeedContributions::class,
+                       ],
 
-                       'with factory' => array(
+                       'with factory' => [
                                $modules,
                                'login',
-                               'ApiLogin',
-                       ),
+                               ApiLogin::class,
+                       ],
 
-                       'with closure' => array(
+                       'with closure' => [
                                $modules,
                                'logout',
-                               'ApiLogout',
-                       ),
-               );
+                               ApiLogout::class,
+                       ],
+               ];
        }
 
        /**
+        * @covers ApiModuleManager::getModule
         * @dataProvider getModuleProvider
         */
        public function testGetModule( $modules, $name, $expectedClass ) {
@@ -172,11 +173,14 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                $this->assertNotSame( $module1, $module4 );
        }
 
+       /**
+        * @covers ApiModuleManager::getModule
+        */
        public function testGetModule_null() {
-               $modules = array(
-                       'login' => 'ApiLogin',
-                       'logout' => 'ApiLogout',
-               );
+               $modules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
 
                $moduleManager = $this->getModuleManager();
                $moduleManager->addModules( $modules, 'test' );
@@ -185,16 +189,19 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                $this->assertNull( $moduleManager->getModule( 'login', 'bla' ), 'wrong group' );
        }
 
+       /**
+        * @covers ApiModuleManager::getNames
+        */
        public function testGetNames() {
-               $fooModules = array(
-                       'login' => 'ApiLogin',
-                       'logout' => 'ApiLogout',
-               );
+               $fooModules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
 
-               $barModules = array(
-                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
-                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
-               );
+               $barModules = [
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'feedrecentchanges' => [ 'class' => ApiFeedRecentChanges::class ],
+               ];
 
                $moduleManager = $this->getModuleManager();
                $moduleManager->addModules( $fooModules, 'foo' );
@@ -208,16 +215,19 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                $this->assertArrayEquals( array_keys( $allModules ), $allNames );
        }
 
+       /**
+        * @covers ApiModuleManager::getNamesWithClasses
+        */
        public function testGetNamesWithClasses() {
-               $fooModules = array(
-                       'login' => 'ApiLogin',
-                       'logout' => 'ApiLogout',
-               );
+               $fooModules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
 
-               $barModules = array(
-                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
-                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
-               );
+               $barModules = [
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'feedrecentchanges' => [ 'class' => ApiFeedRecentChanges::class ],
+               ];
 
                $moduleManager = $this->getModuleManager();
                $moduleManager->addModules( $fooModules, 'foo' );
@@ -227,23 +237,26 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                $this->assertArrayEquals( $fooModules, $fooNamesWithClasses );
 
                $allNamesWithClasses = $moduleManager->getNamesWithClasses();
-               $allModules = array_merge( $fooModules, array(
-                       'feedcontributions' => 'ApiFeedContributions',
-                       'feedrecentchanges' => 'ApiFeedRecentChanges',
-               ) );
+               $allModules = array_merge( $fooModules, [
+                       'feedcontributions' => ApiFeedContributions::class,
+                       'feedrecentchanges' => ApiFeedRecentChanges::class,
+               ] );
                $this->assertArrayEquals( $allModules, $allNamesWithClasses );
        }
 
+       /**
+        * @covers ApiModuleManager::getModuleGroup
+        */
        public function testGetModuleGroup() {
-               $fooModules = array(
-                       'login' => 'ApiLogin',
-                       'logout' => 'ApiLogout',
-               );
+               $fooModules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
 
-               $barModules = array(
-                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
-                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
-               );
+               $barModules = [
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'feedrecentchanges' => [ 'class' => ApiFeedRecentChanges::class ],
+               ];
 
                $moduleManager = $this->getModuleManager();
                $moduleManager->addModules( $fooModules, 'foo' );
@@ -254,23 +267,64 @@ class ApiModuleManagerTest extends MediaWikiTestCase {
                $this->assertNull( $moduleManager->getModuleGroup( 'quux' ) );
        }
 
+       /**
+        * @covers ApiModuleManager::getGroups
+        */
        public function testGetGroups() {
-               $fooModules = array(
-                       'login' => 'ApiLogin',
-                       'logout' => 'ApiLogout',
-               );
+               $fooModules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
 
-               $barModules = array(
-                       'feedcontributions' => array( 'class' => 'ApiFeedContributions' ),
-                       'feedrecentchanges' => array( 'class' => 'ApiFeedRecentChanges' ),
-               );
+               $barModules = [
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'feedrecentchanges' => [ 'class' => ApiFeedRecentChanges::class ],
+               ];
 
                $moduleManager = $this->getModuleManager();
                $moduleManager->addModules( $fooModules, 'foo' );
                $moduleManager->addModules( $barModules, 'bar' );
 
                $groups = $moduleManager->getGroups();
-               $this->assertArrayEquals( array( 'foo', 'bar' ), $groups );
+               $this->assertArrayEquals( [ 'foo', 'bar' ], $groups );
        }
 
+       /**
+        * @covers ApiModuleManager::getClassName
+        */
+       public function testGetClassName() {
+               $fooModules = [
+                       'login' => ApiLogin::class,
+                       'logout' => ApiLogout::class,
+               ];
+
+               $barModules = [
+                       'feedcontributions' => [ 'class' => ApiFeedContributions::class ],
+                       'feedrecentchanges' => [ 'class' => ApiFeedRecentChanges::class ],
+               ];
+
+               $moduleManager = $this->getModuleManager();
+               $moduleManager->addModules( $fooModules, 'foo' );
+               $moduleManager->addModules( $barModules, 'bar' );
+
+               $this->assertEquals(
+                       ApiLogin::class,
+                       $moduleManager->getClassName( 'login' )
+               );
+               $this->assertEquals(
+                       ApiLogout::class,
+                       $moduleManager->getClassName( 'logout' )
+               );
+               $this->assertEquals(
+                       ApiFeedContributions::class,
+                       $moduleManager->getClassName( 'feedcontributions' )
+               );
+               $this->assertEquals(
+                       ApiFeedRecentChanges::class,
+                       $moduleManager->getClassName( 'feedrecentchanges' )
+               );
+               $this->assertFalse(
+                       $moduleManager->getClassName( 'nonexistentmodule' )
+               );
+       }
 }