8 * @covers ApiQueryPrefixSearch
10 class ApiQueryPrefixSearchTest
extends ApiTestCase
{
11 const TEST_QUERY
= 'unittest';
13 public function setUp() {
15 $this->setMwGlobals( [
16 'wgSearchType' => MockCompletionSearchEngine
::class,
18 MockCompletionSearchEngine
::clearMockResults();
20 foreach ( range( 0, 10 ) as $i ) {
21 $title = "Search_Result_$i";
23 $this->editPage( $title, 'hi there' );
25 MockCompletionSearchEngine
::addMockResults( self
::TEST_QUERY
, $results );
28 public function offsetContinueProvider() {
30 'no offset' => [ 2, 2, 0, 2 ],
31 'with offset' => [ 7, 2, 5, 2 ],
32 'past end, no offset' => [ null, 11, 0, 20 ],
33 'past end, with offset' => [ null, 5, 6, 10 ],
38 * @dataProvider offsetContinueProvider
40 public function testOffsetContinue( $expectedOffset, $expectedResults, $offset, $limit ) {
41 $response = $this->doApiRequest( [
43 'list' => 'prefixsearch',
44 'pssearch' => self
::TEST_QUERY
,
45 'psoffset' => $offset,
48 $result = $response[0];
49 $this->assertArrayNotHasKey( 'warnings', $result );
50 $suggestions = $result['query']['prefixsearch'];
51 $this->assertCount( $expectedResults, $suggestions );
52 if ( $expectedOffset == null ) {
53 $this->assertArrayNotHasKey( 'continue', $result );
55 $this->assertArrayHasKey( 'continue', $result );
56 $this->assertEquals( $expectedOffset, $result['continue']['psoffset'] );