phpunit-patch-coverage assumes that the filename matches the classname as a performance optimization. And for most test cases, this is true. We should enforce this with PHPCS, mostly to help developers not make mistakes. Test cases that have mock classes will need to ensure that the test case class that matches the filename comes first, since that's the only class the sniff will look at. Tests in GlobalFunctions/ and maintenance/ are still exempted for now, since they don't match yet. Change-Id: Iede341504290f5ba2da1c81908069ba9d465600f
87 lines
1.8 KiB
PHP
87 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group Search
|
|
*/
|
|
class SearchUpdateTest extends MediaWikiTestCase {
|
|
|
|
/**
|
|
* @var SearchUpdate
|
|
*/
|
|
private $su;
|
|
|
|
protected function setUp() {
|
|
parent::setUp();
|
|
$this->setMwGlobals( 'wgSearchType', 'MockSearch' );
|
|
$this->su = new SearchUpdate( 0, "" );
|
|
}
|
|
|
|
public function updateText( $text ) {
|
|
return trim( $this->su->updateText( $text ) );
|
|
}
|
|
|
|
/**
|
|
* @covers SearchUpdate::updateText
|
|
*/
|
|
public function testUpdateText() {
|
|
$this->assertEquals(
|
|
'test',
|
|
$this->updateText( '<div>TeSt</div>' ),
|
|
'HTML stripped, text lowercased'
|
|
);
|
|
|
|
$this->assertEquals(
|
|
'foo bar boz quux',
|
|
$this->updateText( <<<EOT
|
|
<table style="color:red; font-size:100px">
|
|
<tr class="scary"><td><div>foo</div></td><tr>bar</td></tr>
|
|
<tr><td>boz</td><tr>quux</td></tr>
|
|
</table>
|
|
EOT
|
|
), 'Stripping HTML tables' );
|
|
|
|
$this->assertEquals(
|
|
'a b',
|
|
$this->updateText( 'a > b' ),
|
|
'Handle unclosed tags'
|
|
);
|
|
|
|
$text = str_pad( "foo <barbarbar \n", 10000, 'x' );
|
|
|
|
$this->assertNotEquals(
|
|
'',
|
|
$this->updateText( $text ),
|
|
'T20609'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @covers SearchUpdate::updateText
|
|
* Test T34712
|
|
* Test if unicode quotes in article links make its search index empty
|
|
*/
|
|
public function testUnicodeLinkSearchIndexError() {
|
|
$text = "text „http://example.com“ text";
|
|
$result = $this->updateText( $text );
|
|
$processed = preg_replace( '/Q/u', 'Q', $result );
|
|
$this->assertTrue(
|
|
$processed != '',
|
|
'Link surrounded by unicode quotes should not fail UTF-8 validation'
|
|
);
|
|
}
|
|
}
|
|
|
|
class MockSearch extends SearchEngine {
|
|
public static $id;
|
|
public static $title;
|
|
public static $text;
|
|
|
|
public function __construct( $db ) {
|
|
}
|
|
|
|
public function update( $id, $title, $text ) {
|
|
self::$id = $id;
|
|
self::$title = $title;
|
|
self::$text = $text;
|
|
}
|
|
}
|