3 use MediaWiki\MediaWikiServices
;
5 class ApiOpenSearchTest
extends MediaWikiTestCase
{
6 public function testGetAllowedParams() {
7 $config = $this->replaceSearchEngineConfig();
8 $config->expects( $this->any() )
9 ->method( 'getSearchTypes' )
10 ->will( $this->returnValue( [ 'the one ring' ] ) );
12 $api = $this->createApi();
13 $engine = $this->replaceSearchEngine();
14 $engine->expects( $this->any() )
15 ->method( 'getProfiles' )
16 ->will( $this->returnValueMap( [
17 [ SearchEngine
::COMPLETION_PROFILE_TYPE
, $api->getUser(), [
20 'desc-message' => 'normal-message',
25 'desc-message' => 'strict-message',
30 $params = $api->getAllowedParams();
32 $this->assertArrayNotHasKey( 'offset', $params );
33 $this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
34 $this->assertEquals( 'normal', $params['profile'][ApiBase
::PARAM_DFLT
] );
37 private function replaceSearchEngineConfig() {
38 $config = $this->getMockBuilder( 'SearchEngineConfig' )
39 ->disableOriginalConstructor()
41 $this->setService( 'SearchEngineConfig', $config );
46 private function replaceSearchEngine() {
47 $engine = $this->getMockBuilder( 'SearchEngine' )
48 ->disableOriginalConstructor()
50 $engineFactory = $this->getMockBuilder( 'SearchEngineFactory' )
51 ->disableOriginalConstructor()
53 $engineFactory->expects( $this->any() )
55 ->will( $this->returnValue( $engine ) );
56 $this->setService( 'SearchEngineFactory', $engineFactory );
61 private function createApi() {
62 $ctx = new RequestContext();
63 $apiMain = new ApiMain( $ctx );
64 return new ApiOpenSearch( $apiMain, 'opensearch', '' );