2018-05-10 22:03:55 +00:00
|
|
|
<?php
|
|
|
|
|
|
2020-06-30 15:09:24 +00:00
|
|
|
class SearchResultSetTest extends MediaWikiIntegrationTestCase {
|
2018-05-10 22:03:55 +00:00
|
|
|
/**
|
|
|
|
|
* @covers SearchResultSet::getIterator
|
2019-07-25 12:11:06 +00:00
|
|
|
* @covers BaseSearchResultSet::next
|
|
|
|
|
* @covers BaseSearchResultSet::rewind
|
2018-05-10 22:03:55 +00:00
|
|
|
*/
|
|
|
|
|
public function testIterate() {
|
|
|
|
|
$result = SearchResult::newFromTitle( Title::newMainPage() );
|
|
|
|
|
$resultSet = new MockSearchResultSet( [ $result ] );
|
2020-05-30 10:36:42 +00:00
|
|
|
$this->assertSame( 1, $resultSet->numRows() );
|
2018-05-10 22:03:55 +00:00
|
|
|
$count = 0;
|
|
|
|
|
foreach ( $resultSet as $iterResult ) {
|
|
|
|
|
$this->assertEquals( $result, $iterResult );
|
|
|
|
|
$count++;
|
|
|
|
|
}
|
2020-05-30 10:36:42 +00:00
|
|
|
$this->assertSame( 1, $count );
|
2018-05-10 22:03:55 +00:00
|
|
|
|
2019-07-25 12:11:06 +00:00
|
|
|
$this->hideDeprecated( 'BaseSearchResultSet::rewind' );
|
|
|
|
|
$this->hideDeprecated( 'BaseSearchResultSet::next' );
|
2018-05-10 22:03:55 +00:00
|
|
|
$resultSet->rewind();
|
|
|
|
|
$count = 0;
|
2018-06-30 09:43:00 +00:00
|
|
|
while ( ( $iterResult = $resultSet->next() ) !== false ) {
|
2018-05-10 22:03:55 +00:00
|
|
|
$this->assertEquals( $result, $iterResult );
|
|
|
|
|
$count++;
|
|
|
|
|
}
|
2020-05-30 10:36:42 +00:00
|
|
|
$this->assertSame( 1, $count );
|
2018-05-10 22:03:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2019-07-25 13:48:34 +00:00
|
|
|
* @covers SearchResultSetTrait::augmentResult
|
|
|
|
|
* @covers SearchResultSetTrait::setAugmentedData
|
2018-05-10 22:03:55 +00:00
|
|
|
*/
|
|
|
|
|
public function testDelayedResultAugment() {
|
|
|
|
|
$result = SearchResult::newFromTitle( Title::newMainPage() );
|
|
|
|
|
$resultSet = new MockSearchResultSet( [ $result ] );
|
|
|
|
|
$resultSet->augmentResult( $result );
|
|
|
|
|
$this->assertEquals( [], $result->getExtensionData() );
|
|
|
|
|
$resultSet->setAugmentedData( 'foo', [
|
|
|
|
|
$result->getTitle()->getArticleID() => 'bar'
|
|
|
|
|
] );
|
|
|
|
|
$this->assertEquals( [ 'foo' => 'bar' ], $result->getExtensionData() );
|
|
|
|
|
}
|
2017-12-19 22:19:49 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @covers SearchResultSet::shrink
|
|
|
|
|
* @covers SearchResultSet::count
|
|
|
|
|
* @covers SearchResultSet::hasMoreResults
|
|
|
|
|
*/
|
|
|
|
|
public function testHasMoreResults() {
|
|
|
|
|
$result = SearchResult::newFromTitle( Title::newMainPage() );
|
|
|
|
|
$resultSet = new MockSearchResultSet( array_fill( 0, 3, $result ) );
|
2020-02-28 15:45:22 +00:00
|
|
|
$this->assertCount( 3, $resultSet );
|
2017-12-19 22:19:49 +00:00
|
|
|
$this->assertFalse( $resultSet->hasMoreResults() );
|
|
|
|
|
$resultSet->shrink( 3 );
|
|
|
|
|
$this->assertFalse( $resultSet->hasMoreResults() );
|
|
|
|
|
$resultSet->shrink( 2 );
|
|
|
|
|
$this->assertTrue( $resultSet->hasMoreResults() );
|
|
|
|
|
}
|
2019-10-07 14:29:09 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @covers SearchResultSet::shrink
|
|
|
|
|
*/
|
|
|
|
|
public function testShrink() {
|
|
|
|
|
$results = array_fill( 0, 3, SearchResult::newFromTitle( Title::newMainPage() ) );
|
|
|
|
|
$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() );
|
|
|
|
|
}
|
2018-05-10 22:03:55 +00:00
|
|
|
}
|