wiki.techinc.nl/tests/phpunit/includes/api/ApiGeneratorTest.php
Timo Tijhof ab7729589e ApiOptionsTest: Group medium (takes more than 2 seconds).
Various jobs are failing in Jenkins due to this test exceeding
the maximum execution time of 2 seconds.

https://integration.mediawiki.org/ci/job/mediawiki-core-phpunit-api/684/console

Follows-up 13f0f58, fb7c95f.

Change-Id: I41a9a571a50e538de514586618d58438c5dd6148
2012-12-28 18:23:02 +01:00

80 lines
2.4 KiB
PHP

<?php
/**
* @group API
*/
class ApiGeneratorTest extends MediaWikiTestCase {
/**
* Helper to easily get an ApiQuery object instance
*/
function getApiQuery() {
// Initialize an ApiQuery object to play with
$main = new ApiMain( new FauxRequest() );
return new ApiQuery( $main, 'foo', 'bar' );
}
/**
* Test whether all registered query modules which are subclasses of
* ApiQueryGeneratorBase are listed as being a generator. Registration is
* done:
* - for core: add it to ApiQuery::$mQueryGenerators
* - for extension: by adding to $wgAPIGeneratorModules
*
* @dataProvider provideApiquerygeneratorbaseChilds
*/
public function testApiquerygeneatorbaseModulesListedAsGenerators(
$moduleName, $moduleClass
) {
$generators = $this->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()->getModules();
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()->getModules();
$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;
}
}