File: MockSearchEngine.php

package info (click to toggle)
mediawiki 1%3A1.43.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 417,464 kB
  • sloc: php: 1,062,949; javascript: 664,290; sql: 9,714; python: 5,458; xml: 3,489; sh: 1,131; makefile: 64
file content (50 lines) | stat: -rw-r--r-- 1,400 bytes parent folder | download | duplicates (3)
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
<?php

class MockSearchEngine extends SearchEngine {
	use LinkCacheTestTrait;

	/** @var SearchResult[][] */
	private static $results = [];
	/** @var ISearchResultSet[][] */
	private static $interwikiResults = [];

	public static function clearMockResults() {
		self::$results = [];
		self::$interwikiResults = [];
	}

	/**
	 * @param string $query The query searched for *after* initial
	 *  transformations have been applied.
	 * @param SearchResult[] $results The results to return for $query
	 */
	public static function addMockResults( $query, array $results ) {
		$mockSearchEngine = new self();
		foreach ( $results as &$result ) {
			// Resolve deferred results; needed to work around T203279
			if ( is_callable( $result ) ) {
				$result = $result();
			}

			// TODO: better page ids? Does it matter?
			$mockSearchEngine->addGoodLinkObject( mt_rand(), $result->getTitle() );
		}
		self::$results[$query] = $results;
	}

	/**
	 * @param ISearchResultSet[][] $interwikiResults
	 */
	public static function setMockInterwikiResults( array $interwikiResults ) {
		self::$interwikiResults = $interwikiResults;
	}

	protected function doSearchText( $term ) {
		if ( isset( self::$results[ $term ] ) ) {
			$results = array_slice( self::$results[ $term ], $this->offset, $this->limit );
		} else {
			$results = [];
		}
		return new MockSearchResultSet( $results, self::$interwikiResults );
	}
}