summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/api/ApiOpenSearchTest.php
blob: 209ca07b0d41b2d7e7b0fc78f1cb8a88e4d2a9dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php

/**
 * @covers ApiOpenSearch
 */
class ApiOpenSearchTest extends MediaWikiTestCase {
	public function testGetAllowedParams() {
		$config = $this->replaceSearchEngineConfig();
		$config->expects( $this->any() )
			->method( 'getSearchTypes' )
			->will( $this->returnValue( [ 'the one ring' ] ) );

		$api = $this->createApi();
		$engine = $this->replaceSearchEngine();
		$engine->expects( $this->any() )
			->method( 'getProfiles' )
			->will( $this->returnValueMap( [
				[ SearchEngine::COMPLETION_PROFILE_TYPE, $api->getUser(), [
					[
						'name' => 'normal',
						'desc-message' => 'normal-message',
						'default' => true,
					],
					[
						'name' => 'strict',
						'desc-message' => 'strict-message',
					],
				] ],
			] ) );

		$params = $api->getAllowedParams();

		$this->assertArrayNotHasKey( 'offset', $params );
		$this->assertArrayHasKey( 'profile', $params, print_r( $params, true ) );
		$this->assertEquals( 'normal', $params['profile'][ApiBase::PARAM_DFLT] );
	}

	private function replaceSearchEngineConfig() {
		$config = $this->getMockBuilder( SearchEngineConfig::class )
			->disableOriginalConstructor()
			->getMock();
		$this->setService( 'SearchEngineConfig', $config );

		return $config;
	}

	private function replaceSearchEngine() {
		$engine = $this->getMockBuilder( SearchEngine::class )
			->disableOriginalConstructor()
			->getMock();
		$engineFactory = $this->getMockBuilder( SearchEngineFactory::class )
			->disableOriginalConstructor()
			->getMock();
		$engineFactory->expects( $this->any() )
			->method( 'create' )
			->will( $this->returnValue( $engine ) );
		$this->setService( 'SearchEngineFactory', $engineFactory );

		return $engine;
	}

	private function createApi() {
		$ctx = new RequestContext();
		$apiMain = new ApiMain( $ctx );
		return new ApiOpenSearch( $apiMain, 'opensearch', '' );
	}
}