tests: Return FakeResultWrapper from mocked IReadableDatabase::select

To match the return type documentation of IReadableDatabase::select

Change-Id: I6a03c9468aa23f830f550e83eebf734ba0167c23
This commit is contained in:
Umherirrender 2024-04-19 21:20:07 +02:00
parent 55f710b3df
commit 6c870529e4

View file

@ -21,6 +21,7 @@ use MediaWikiUnitTestCase;
use stdClass;
use WANObjectCache;
use Wikimedia\Rdbms\DBConnRef;
use Wikimedia\Rdbms\FakeResultWrapper;
use Wikimedia\Rdbms\ILoadBalancer;
use Wikimedia\Rdbms\LBFactory;
use Wikimedia\Rdbms\SelectQueryBuilder;
@ -83,19 +84,17 @@ class FilterLookupTest extends MediaWikiUnitTestCase {
$db->method( 'select' )->willReturnCallback(
static function ( $table, $_, $where ) use ( $filterRows, $actionRows ) {
$tables = (array)$table;
$ret = [];
if ( in_array( 'abuse_filter_action', $tables ) ) {
$ret = [];
foreach ( $actionRows as $row ) {
if ( $row->afa_filter === $where['afa_filter'] ) {
$ret[] = $row;
}
}
return $ret;
} elseif ( array_intersect( $tables, [ 'abuse_filter', 'abuse_filter_history' ] ) ) {
return $filterRows;
} else {
return [];
$ret = $filterRows;
}
return new FakeResultWrapper( $ret );
}
);
return $db;
@ -301,7 +300,11 @@ class FilterLookupTest extends MediaWikiUnitTestCase {
$db = $this->createMock( DBConnRef::class );
$db->method( 'newSelectQueryBuilder' )->willReturnCallback( static fn () => new SelectQueryBuilder( $db ) );
// Should be called twice: once for the filter, once for the actions
$db->expects( $this->exactly( 2 ) )->method( 'select' )->willReturnOnConsecutiveCalls( [ $row ], [] );
$db->expects( $this->exactly( 2 ) )->method( 'select' )
->willReturnOnConsecutiveCalls(
new FakeResultWrapper( [ $row ] ),
new FakeResultWrapper( [] )
);
$filterLookup = $this->getLookup( $db, 'foobar', null, $isCentral );
// WAN cache is only used for global filters
@ -325,7 +328,12 @@ class FilterLookupTest extends MediaWikiUnitTestCase {
// 4 calls: row, actions, row, actions
$db->expects( $this->exactly( 4 ) )
->method( 'select' )
->willReturnOnConsecutiveCalls( [ $row ], [], [ $row ], [] );
->willReturnOnConsecutiveCalls(
new FakeResultWrapper( [ $row ] ),
new FakeResultWrapper( [] ),
new FakeResultWrapper( [ $row ] ),
new FakeResultWrapper( [] )
);
$cache = new WANObjectCache( [ 'cache' => new HashBagOStuff() ] );
$filterLookup = $this->getLookup( $db, 'foobar', $cache );