ApiOpenSearchTest.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * @covers ApiOpenSearch
  4. */
  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' ] ) );
  11. $api = $this->createApi();
  12. $engine = $this->replaceSearchEngine();
  13. $engine->expects( $this->any() )
  14. ->method( 'getProfiles' )
  15. ->will( $this->returnValueMap( [
  16. [ SearchEngine::COMPLETION_PROFILE_TYPE, $api->getUser(), [
  17. [
  18. 'name' => 'normal',
  19. 'desc-message' => 'normal-message',
  20. 'default' => true,
  21. ],
  22. [
  23. 'name' => 'strict',
  24. 'desc-message' => 'strict-message',
  25. ],
  26. ] ],
  27. ] ) );
  28. $params = $api->getAllowedParams();
  29. $this->assertArrayNotHasKey( 'offset', $params );
  30. $this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
  31. $this->assertEquals( 'normal', $params['profile'][ApiBase::PARAM_DFLT] );
  32. }
  33. private function replaceSearchEngineConfig() {
  34. $config = $this->getMockBuilder( SearchEngineConfig::class )
  35. ->disableOriginalConstructor()
  36. ->getMock();
  37. $this->setService( 'SearchEngineConfig', $config );
  38. return $config;
  39. }
  40. private function replaceSearchEngine() {
  41. $engine = $this->getMockBuilder( SearchEngine::class )
  42. ->disableOriginalConstructor()
  43. ->getMock();
  44. $engineFactory = $this->getMockBuilder( SearchEngineFactory::class )
  45. ->disableOriginalConstructor()
  46. ->getMock();
  47. $engineFactory->expects( $this->any() )
  48. ->method( 'create' )
  49. ->will( $this->returnValue( $engine ) );
  50. $this->setService( 'SearchEngineFactory', $engineFactory );
  51. return $engine;
  52. }
  53. private function createApi() {
  54. $ctx = new RequestContext();
  55. $apiMain = new ApiMain( $ctx );
  56. return new ApiOpenSearch( $apiMain, 'opensearch', '' );
  57. }
  58. }