resourceloader: Simplify StringSet fallback
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiQueryPrefixSearchTest.php
1 <?php
2
3 /**
4 * @group API
5 * @group medium
6 *
7 * @covers ApiQueryPrefixSearch
8 */
9 class ApiQueryPrefixSearchTest extends ApiTestCase {
10 const TEST_QUERY = 'unittest';
11
12 public function setUp() {
13 parent::setUp();
14 $this->setMwGlobals( [
15 'wgSearchType' => MockCompletionSearchEngine::class,
16 ] );
17 MockCompletionSearchEngine::clearMockResults();
18 $results = [];
19 foreach ( range( 0, 10 ) as $i ) {
20 $title = "Search_Result_$i";
21 $results[] = $title;
22 $this->editPage( $title, 'hi there' );
23 }
24 MockCompletionSearchEngine::addMockResults( self::TEST_QUERY, $results );
25 }
26
27 public function offsetContinueProvider() {
28 return [
29 'no offset' => [ 2, 2, 0, 2 ],
30 'with offset' => [ 7, 2, 5, 2 ],
31 'past end, no offset' => [ null, 11, 0, 20 ],
32 'past end, with offset' => [ null, 5, 6, 10 ],
33 ];
34 }
35
36 /**
37 * @dataProvider offsetContinueProvider
38 */
39 public function testOffsetContinue( $expectedOffset, $expectedResults, $offset, $limit ) {
40 $response = $this->doApiRequest( [
41 'action' => 'query',
42 'list' => 'prefixsearch',
43 'pssearch' => self::TEST_QUERY,
44 'psoffset' => $offset,
45 'pslimit' => $limit,
46 ] );
47 $result = $response[0];
48 $this->assertArrayNotHasKey( 'warnings', $result );
49 $suggestions = $result['query']['prefixsearch'];
50 $this->assertCount( $expectedResults, $suggestions );
51 if ( $expectedOffset == null ) {
52 $this->assertArrayNotHasKey( 'continue', $result );
53 } else {
54 $this->assertArrayHasKey( 'continue', $result );
55 $this->assertEquals( $expectedOffset, $result['continue']['psoffset'] );
56 }
57 }
58 }