e5a871726fd02d5c3353d669d25538b72538cb71
6 class ApiGeneratorTest
extends MediaWikiTestCase
{
9 * Helper to easily get an ApiQuery object instance
11 function getApiQuery() {
12 // Initialize an ApiQuery object to play with
13 $main = new ApiMain( new FauxRequest() );
14 return new ApiQuery( $main, 'foo', 'bar' );
18 * Test whether all registered query modules which are subclasses of
19 * ApiQueryGeneratorBase are listed as being a generator. Registration is
21 * - for core: add it to ApiQuery::$mQueryGenerators
22 * - for extension: by adding to $wgAPIGeneratorModules
24 * @dataProvider provideApiquerygeneratorbaseChilds
26 public function testApiquerygeneatorbaseModulesListedAsGenerators(
27 $moduleName, $moduleClass
29 $generators = $this->getApiQuery()->getGenerators();
30 $this->assertArrayHasKey( $moduleName, $generators,
31 "API module '$moduleName' of class '$moduleClass' (an ApiQueryGeneratorBase subclass) must be listed in ApiQuery::\$mQueryGenerators or added to \$wgAPIGeneratorModules."
36 * Returns API modules which are subclassing ApiQueryGeneratorBase.
38 * (moduleName, moduleClass)
40 public function provideApiquerygeneratorbaseChilds() {
42 $modules = $this->getApiQuery()->getModules();
43 foreach( $modules as $moduleName => $moduleClass ) {
44 if( !is_subclass_of( $moduleClass, 'ApiQueryGeneratorBase' ) ) {
47 $cases[] = array( $moduleName, $moduleClass );
53 * @dataProvider provideListedApiqueryGenerators
55 public function testGeneratorsAreApiquerygeneratorbaseSubclasses(
56 $generatorName, $generatorClass
58 $modules = $this->getApiQuery()->getModules();
59 $this->assertArrayHasKey( $generatorName, $modules,
60 "Class '$generatorClass' of generator '$generatorName' must be a subclass of 'ApiQueryGeneratorBase'. Listed either in ApiQuery::\$mQueryGenerators or in \$wgAPIGeneratorModules."
66 * Return ApiQuery generators, either listed in ApiQuery or registered
67 * via wgAPIGeneratorModules.
69 * (moduleName, $moduleClass).
71 public function provideListedApiqueryGenerators() {
73 $generators = $this->getApiQuery()->getGenerators();
74 foreach( $generators as $generatorName => $generatorClass ) {
75 $cases[] = array( $generatorName, $generatorClass );