getApiQuery()->getGenerators(); $this->assertArrayHasKey( $moduleName, $generators, "API module '$moduleName' of class '$moduleClass' (an ApiQueryGeneratorBase subclass) must be listed in ApiQuery::\$mQueryGenerators or added to \$wgAPIGeneratorModules." ); } /** * Returns API modules which are subclassing ApiQueryGeneratorBase. * Case format is: * (moduleName, moduleClass) */ public function provideApiquerygeneratorbaseChilds() { $cases = array(); $modules = $this->getApiQuery()->getModuleManager()->getNamesWithClasses(); foreach ( $modules as $moduleName => $moduleClass ) { if ( !is_subclass_of( $moduleClass, 'ApiQueryGeneratorBase' ) ) { continue; } $cases[] = array( $moduleName, $moduleClass ); } return $cases; } /** * @dataProvider provideListedApiqueryGenerators */ public function testGeneratorsAreApiquerygeneratorbaseSubclasses( $generatorName, $generatorClass ) { $modules = $this->getApiQuery()->getModuleManager()->getNamesWithClasses(); $this->assertArrayHasKey( $generatorName, $modules, "Class '$generatorClass' of generator '$generatorName' must be a subclass of 'ApiQueryGeneratorBase'. Listed either in ApiQuery::\$mQueryGenerators or in \$wgAPIGeneratorModules." ); } /** * Return ApiQuery generators, either listed in ApiQuery or registered * via wgAPIGeneratorModules. * Case format is: * (moduleName, $moduleClass). */ public function provideListedApiqueryGenerators() { $cases = array(); $generators = $this->getApiQuery()->getGenerators(); foreach ( $generators as $generatorName => $generatorClass ) { $cases[] = array( $generatorName, $generatorClass ); } return $cases; } }