4 * @covers ApiOpenSearch
6 class ApiOpenSearchTest
extends MediaWikiTestCase
{
7 public function testGetAllowedParams() {
8 $config = $this->replaceSearchEngineConfig();
9 $config->expects( $this->any() )
10 ->method( 'getSearchTypes' )
11 ->will( $this->returnValue( [ 'the one ring' ] ) );
13 $api = $this->createApi();
14 $engine = $this->replaceSearchEngine();
15 $engine->expects( $this->any() )
16 ->method( 'getProfiles' )
17 ->will( $this->returnValueMap( [
18 [ SearchEngine
::COMPLETION_PROFILE_TYPE
, $api->getUser(), [
21 'desc-message' => 'normal-message',
26 'desc-message' => 'strict-message',
31 $params = $api->getAllowedParams();
33 $this->assertArrayNotHasKey( 'offset', $params );
34 $this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
35 $this->assertEquals( 'normal', $params['profile'][ApiBase
::PARAM_DFLT
] );
38 private function replaceSearchEngineConfig() {
39 $config = $this->getMockBuilder( SearchEngineConfig
::class )
40 ->disableOriginalConstructor()
42 $this->setService( 'SearchEngineConfig', $config );
47 private function replaceSearchEngine() {
48 $engine = $this->getMockBuilder( SearchEngine
::class )
49 ->disableOriginalConstructor()
51 $engineFactory = $this->getMockBuilder( SearchEngineFactory
::class )
52 ->disableOriginalConstructor()
54 $engineFactory->expects( $this->any() )
56 ->will( $this->returnValue( $engine ) );
57 $this->setService( 'SearchEngineFactory', $engineFactory );
62 private function createApi() {
63 $ctx = new RequestContext();
64 $apiMain = new ApiMain( $ctx );
65 return new ApiOpenSearch( $apiMain, 'opensearch', '' );