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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
<?php
use MediaWiki\Revision\RevisionLookup;
use MediaWiki\Title\Title;
class SearchResultSetTest extends MediaWikiIntegrationTestCase {
protected function setUp(): void {
parent::setUp();
$this->setService( 'RevisionLookup', $this->createMock( RevisionLookup::class ) );
}
/**
* @covers \SearchResultSet::getIterator
* @covers \BaseSearchResultSet::next
* @covers \BaseSearchResultSet::rewind
*/
public function testIterate() {
$title = Title::makeTitle( NS_MAIN, __METHOD__ );
$result = SearchResult::newFromTitle( $title );
$resultSet = new MockSearchResultSet( [ $result ] );
$this->assertSame( 1, $resultSet->numRows() );
$count = 0;
foreach ( $resultSet as $iterResult ) {
$this->assertEquals( $result, $iterResult );
$count++;
}
$this->assertSame( 1, $count );
$this->hideDeprecated( 'BaseSearchResultSet::rewind' );
$this->hideDeprecated( 'BaseSearchResultSet::next' );
$resultSet->rewind();
$count = 0;
foreach ( $resultSet as $iterResult ) {
$this->assertEquals( $result, $iterResult );
$count++;
}
$this->assertSame( 1, $count );
}
/**
* @covers \SearchResultSetTrait::augmentResult
* @covers \SearchResultSetTrait::setAugmentedData
*/
public function testDelayedResultAugment() {
$title = Title::makeTitle( NS_MAIN, __METHOD__ );
$title->resetArticleID( 42 );
$result = SearchResult::newFromTitle( $title );
$resultSet = new MockSearchResultSet( [ $result ] );
$resultSet->augmentResult( $result );
$this->assertEquals( [], $result->getExtensionData() );
$resultSet->setAugmentedData( 'foo', [
$result->getTitle()->getArticleID() => 'bar'
] );
$this->assertEquals( [ 'foo' => 'bar' ], $result->getExtensionData() );
}
/**
* @covers \SearchResultSet::shrink
* @covers \SearchResultSet::count
* @covers \SearchResultSet::hasMoreResults
*/
public function testHasMoreResults() {
$title = Title::makeTitle( NS_MAIN, __METHOD__ );
$result = SearchResult::newFromTitle( $title );
$resultSet = new MockSearchResultSet( array_fill( 0, 3, $result ) );
$this->assertCount( 3, $resultSet );
$this->assertFalse( $resultSet->hasMoreResults() );
$resultSet->shrink( 3 );
$this->assertFalse( $resultSet->hasMoreResults() );
$resultSet->shrink( 2 );
$this->assertTrue( $resultSet->hasMoreResults() );
}
/**
* @covers \SearchResultSet::shrink
*/
public function testShrink() {
$title = Title::makeTitle( NS_MAIN, __METHOD__ );
$results = array_fill( 0, 3, SearchResult::newFromTitle( $title ) );
$resultSet = new MockSearchResultSet( $results );
$this->assertCount( 3, $resultSet->extractResults() );
$this->assertCount( 3, $resultSet->extractTitles() );
$resultSet->shrink( 1 );
$this->assertCount( 1, $resultSet->extractResults() );
$this->assertCount( 1, $resultSet->extractTitles() );
}
}
|