2016-05-13 00:10:52 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @group Search
|
|
|
|
|
* @covers SearchIndexFieldDefinition
|
|
|
|
|
*/
|
|
|
|
|
class SearchIndexFieldTest extends MediaWikiTestCase {
|
|
|
|
|
|
|
|
|
|
public function getMergeCases() {
|
|
|
|
|
return [
|
|
|
|
|
[ 0, 'test', 0, 'test', true ],
|
|
|
|
|
[ SearchIndexField::INDEX_TYPE_NESTED, 'test',
|
2017-02-25 21:53:36 +00:00
|
|
|
SearchIndexField::INDEX_TYPE_NESTED, 'test', false ],
|
2016-05-13 00:10:52 +00:00
|
|
|
[ 0, 'test', 0, 'test2', true ],
|
|
|
|
|
[ 0, 'test', 1, 'test', false ],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @dataProvider getMergeCases
|
2017-08-11 15:46:31 +00:00
|
|
|
* @param int $t1
|
|
|
|
|
* @param string $n1
|
|
|
|
|
* @param int $t2
|
|
|
|
|
* @param string $n2
|
|
|
|
|
* @param bool $result
|
2016-05-13 00:10:52 +00:00
|
|
|
*/
|
|
|
|
|
public function testMerge( $t1, $n1, $t2, $n2, $result ) {
|
2017-02-09 21:30:12 +00:00
|
|
|
$field1 =
|
|
|
|
|
$this->getMockBuilder( SearchIndexFieldDefinition::class )
|
|
|
|
|
->setMethods( [ 'getMapping' ] )
|
|
|
|
|
->setConstructorArgs( [ $n1, $t1 ] )
|
|
|
|
|
->getMock();
|
|
|
|
|
$field2 =
|
|
|
|
|
$this->getMockBuilder( SearchIndexFieldDefinition::class )
|
|
|
|
|
->setMethods( [ 'getMapping' ] )
|
|
|
|
|
->setConstructorArgs( [ $n2, $t2 ] )
|
|
|
|
|
->getMock();
|
2016-05-13 00:10:52 +00:00
|
|
|
|
|
|
|
|
if ( $result ) {
|
|
|
|
|
$this->assertNotFalse( $field1->merge( $field2 ) );
|
|
|
|
|
} else {
|
|
|
|
|
$this->assertFalse( $field1->merge( $field2 ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$field1->setFlag( 0xFF );
|
|
|
|
|
$this->assertFalse( $field1->merge( $field2 ) );
|
2017-02-09 21:30:12 +00:00
|
|
|
|
|
|
|
|
$field1->setMergeCallback(
|
2017-03-13 18:12:50 +00:00
|
|
|
function ( $a, $b ) {
|
2017-02-09 21:30:12 +00:00
|
|
|
return "test";
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
$this->assertEquals( "test", $field1->merge( $field2 ) );
|
2016-05-13 00:10:52 +00:00
|
|
|
}
|
2017-02-09 21:30:12 +00:00
|
|
|
|
2016-05-13 00:10:52 +00:00
|
|
|
}
|