wiki.techinc.nl/tests/phpunit/includes/api/PrefixUniquenessTest.php
daniel baa11f7430 Allow factory functions for creating API modules.
This enables factory functions to be registered for API modules,
in addition to the module class itself. This allows modules to
use proper dependency injection via the modules constructor.

Example:

  $wgAPIModules['foo'] = array(
    'class' => 'ApiFoo',
    'factory' => function( $main, $action ) { ... }
  )

Change-Id: Ieb85493a7765f466317f5fa74b0b0e262220deab
2014-08-06 22:58:14 +02:00

30 lines
848 B
PHP

<?php
/**
* Checks that all API query modules, core and extensions, have unique prefixes.
*
* @group API
*/
class PrefixUniquenessTest extends MediaWikiTestCase {
public function testPrefixes() {
$main = new ApiMain( new FauxRequest() );
$query = new ApiQuery( $main, 'foo', 'bar' );
$moduleManager = $query->getModuleManager();
$modules = $moduleManager->getNames();
$prefixes = array();
foreach ( $modules as $name ) {
$module = $moduleManager->getModule( $name );
$class = get_class( $module );
$prefix = $module->getModulePrefix();
if ( isset( $prefixes[$prefix] ) ) {
$this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
}
$prefixes[$module->getModulePrefix()] = $class;
}
$this->assertTrue( true ); // dummy call to make this test non-incomplete
}
}