2 class ApiGeneratorTest
extends MediaWikiTestCase
{
5 * Helper to easily get an ApiQuery object instance
7 function getApiQuery() {
8 // Initialize an ApiQuery object to play with
9 $main = new ApiMain( new FauxRequest() );
10 return new ApiQuery( $main, 'foo', 'bar' );
14 * Test whether all registered query modules which are subclasses of
15 * ApiQueryGeneratorBase are listed as being a generator. Registration is
17 * - for core: add it to ApiQuery::$mQueryGenerators
18 * - for extension: by adding to $wgAPIGeneratorModules
20 * @dataProvider provideApiquerygeneratorbaseChilds
22 public function testApiquerygeneatorbaseModulesListedAsGenerators(
23 $moduleName, $moduleClass
25 $generators = $this->getApiQuery()->getGenerators();
26 $this->assertArrayHasKey( $moduleName, $generators,
27 "API module '$moduleName' of class '$moduleClass' (an ApiQueryGeneratorBase subclass) must be listed in ApiQuery::\$mQueryGenerators or added to \$wgAPIGeneratorModules."
32 * Returns API modules which are subclassing ApiQueryGeneratorBase.
34 * (moduleName, moduleClass)
36 public function provideApiquerygeneratorbaseChilds() {
38 $modules = $this->getApiQuery()->getModules();
39 foreach( $modules as $moduleName => $moduleClass ) {
40 if( !is_subclass_of( $moduleClass, 'ApiQueryGeneratorBase' ) ) {
43 $cases[] = array( $moduleName, $moduleClass );
49 * @dataProvider provideListedApiqueryGenerators
51 public function testGeneratorsAreApiquerygeneratorbaseSubclasses(
52 $generatorName, $generatorClass
54 $modules = $this->getApiQuery()->getModules();
55 $this->assertArrayHasKey( $generatorName, $modules,
56 "Class '$generatorClass' of generator '$generatorName' must be a subclass of 'ApiQueryGeneratorBase'. Listed either in ApiQuery::\$mQueryGenerators or in \$wgAPIGeneratorModules."
62 * Return ApiQuery generators, either listed in ApiQuery or registered
63 * via wgAPIGeneratorModules.
65 * (moduleName, $moduleClass).
67 public function provideListedApiqueryGenerators() {
69 $generators = $this->getApiQuery()->getGenerators();
70 foreach( $generators as $generatorName => $generatorClass ) {
71 $cases[] = array( $generatorName, $generatorClass );