2016-06-02 20:32:59 +00:00
|
|
|
<?php
|
|
|
|
|
|
2017-12-24 23:44:36 +00:00
|
|
|
/**
|
2021-04-22 20:54:28 +00:00
|
|
|
* TODO convert to unit test, no integration is needed
|
|
|
|
|
*
|
2017-12-24 23:44:36 +00:00
|
|
|
* @covers ApiOpenSearch
|
|
|
|
|
*/
|
2020-06-30 15:09:24 +00:00
|
|
|
class ApiOpenSearchTest extends MediaWikiIntegrationTestCase {
|
2016-06-02 20:32:59 +00:00
|
|
|
public function testGetAllowedParams() {
|
|
|
|
|
$config = $this->replaceSearchEngineConfig();
|
2021-04-22 08:28:11 +00:00
|
|
|
$config->method( 'getSearchTypes' )
|
|
|
|
|
->willReturn( [ 'the one ring' ] );
|
2016-06-02 20:32:59 +00:00
|
|
|
|
2021-04-22 20:54:28 +00:00
|
|
|
list( $engine, $engineFactory ) = $this->replaceSearchEngine();
|
|
|
|
|
|
|
|
|
|
$ctx = new RequestContext();
|
|
|
|
|
$apiMain = new ApiMain( $ctx );
|
|
|
|
|
$api = new ApiOpenSearch(
|
|
|
|
|
$apiMain,
|
|
|
|
|
'opensearch',
|
|
|
|
|
$this->getServiceContainer()->getLinkBatchFactory(),
|
|
|
|
|
$config,
|
|
|
|
|
$engineFactory
|
|
|
|
|
);
|
|
|
|
|
|
2021-04-22 08:40:46 +00:00
|
|
|
$engine->method( 'getProfiles' )
|
2016-06-02 20:32:59 +00:00
|
|
|
->will( $this->returnValueMap( [
|
2016-09-20 10:07:35 +00:00
|
|
|
[ SearchEngine::COMPLETION_PROFILE_TYPE, $api->getUser(), [
|
2016-06-02 20:32:59 +00:00
|
|
|
[
|
|
|
|
|
'name' => 'normal',
|
|
|
|
|
'desc-message' => 'normal-message',
|
|
|
|
|
'default' => true,
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
'name' => 'strict',
|
|
|
|
|
'desc-message' => 'strict-message',
|
|
|
|
|
],
|
|
|
|
|
] ],
|
|
|
|
|
] ) );
|
|
|
|
|
|
|
|
|
|
$params = $api->getAllowedParams();
|
|
|
|
|
|
|
|
|
|
$this->assertArrayNotHasKey( 'offset', $params );
|
2016-07-28 17:15:07 +00:00
|
|
|
$this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
|
|
|
|
|
$this->assertEquals( 'normal', $params['profile'][ApiBase::PARAM_DFLT] );
|
2016-06-02 20:32:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function replaceSearchEngineConfig() {
|
2018-01-13 00:02:09 +00:00
|
|
|
$config = $this->getMockBuilder( SearchEngineConfig::class )
|
2016-06-02 20:32:59 +00:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
|
|
|
|
$this->setService( 'SearchEngineConfig', $config );
|
|
|
|
|
|
|
|
|
|
return $config;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function replaceSearchEngine() {
|
2018-01-13 00:02:09 +00:00
|
|
|
$engine = $this->getMockBuilder( SearchEngine::class )
|
2016-06-02 20:32:59 +00:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
2018-01-13 00:02:09 +00:00
|
|
|
$engineFactory = $this->getMockBuilder( SearchEngineFactory::class )
|
2016-06-02 20:32:59 +00:00
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
2021-04-22 08:28:11 +00:00
|
|
|
$engineFactory->method( 'create' )
|
|
|
|
|
->willReturn( $engine );
|
2016-06-02 20:32:59 +00:00
|
|
|
$this->setService( 'SearchEngineFactory', $engineFactory );
|
|
|
|
|
|
2021-04-22 20:54:28 +00:00
|
|
|
return [ $engine, $engineFactory ];
|
2016-06-02 20:32:59 +00:00
|
|
|
}
|
|
|
|
|
}
|