public function __construct( ILoadBalancer $lb, $conn, $role ) {
$this->lb = $lb;
$this->role = $role;
- if ( $conn instanceof Database ) {
+ if ( $conn instanceof IDatabase && !( $conn instanceof DBConnRef ) ) {
$this->conn = $conn; // live handle
} elseif ( is_array( $conn ) && count( $conn ) >= 4 && $conn[self::FLD_DOMAIN] !== false ) {
$this->params = $conn;
return $this->__call( __FUNCTION__, func_get_args() );
}
- public function buildLike() {
+ public function buildLike( $param ) {
return $this->__call( __FUNCTION__, func_get_args() );
}
use MWException;
use Title;
use WANObjectCache;
-use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\TestingAccessWrapper;
use WikitextContent;
}
/**
- * @return \PHPUnit_Framework_MockObject_MockObject|Database
+ * @return \PHPUnit_Framework_MockObject_MockObject|IDatabase
*/
private function getMockDatabase() {
- return $this->getMockBuilder( Database::class )
+ return $this->getMockBuilder( IDatabase::class )
->disableOriginalConstructor()->getMock();
}
use MediaWikiTestCase;
use Psr\Log\NullLogger;
use WANObjectCache;
-use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\TestingAccessWrapper;
}
private function getCallCheckingDb( $insertCalls, $selectCalls ) {
- $mock = $this->getMockBuilder( Database::class )
+ $proxiedMethods = [
+ 'select' => $selectCalls,
+ 'insert' => $insertCalls,
+ 'affectedRows' => null,
+ 'insertId' => null,
+ 'getSessionLagStatus' => null,
+ 'writesPending' => null,
+ 'onTransactionPreCommitOrIdle' => null
+ ];
+ $mock = $this->getMockBuilder( IDatabase::class )
->disableOriginalConstructor()
->getMock();
- $mock->expects( $this->exactly( $insertCalls ) )
- ->method( 'insert' )
- ->willReturnCallback( function ( ...$args ) {
- return call_user_func_array( [ $this->db, 'insert' ], $args );
- } );
- $mock->expects( $this->exactly( $selectCalls ) )
- ->method( 'select' )
- ->willReturnCallback( function ( ...$args ) {
- return call_user_func_array( [ $this->db, 'select' ], $args );
- } );
- $mock->expects( $this->exactly( $insertCalls ) )
- ->method( 'affectedRows' )
- ->willReturnCallback( function ( ...$args ) {
- return call_user_func_array( [ $this->db, 'affectedRows' ], $args );
- } );
- $mock->expects( $this->any() )
- ->method( 'insertId' )
- ->willReturnCallback( function ( ...$args ) {
- return call_user_func_array( [ $this->db, 'insertId' ], $args );
- } );
- $mock->expects( $this->any() )
- ->method( 'query' )
- ->willReturn( [] );
- $mock->expects( $this->any() )
- ->method( 'isOpen' )
- ->willReturn( true );
- $wrapper = TestingAccessWrapper::newFromObject( $mock );
- $wrapper->queryLogger = new NullLogger();
+ foreach ( $proxiedMethods as $method => $count ) {
+ $mock->expects( is_int( $count ) ? $this->exactly( $count ) : $this->any() )
+ ->method( $method )
+ ->willReturnCallback( function ( ...$args ) use ( $method ) {
+ return call_user_func_array( [ $this->db, $method ], $args );
+ } );
+ }
return $mock;
}
<?php
-use Wikimedia\Rdbms\Database;
+use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\DBConnRef;
use Wikimedia\Rdbms\FakeResultWrapper;
-use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\ILoadBalancer;
use Wikimedia\Rdbms\ResultWrapper;
* @return IDatabase
*/
private function getDatabaseMock() {
- $db = $this->getMockBuilder( Database::class )
+ $db = $this->getMockBuilder( IDatabase::class )
->disableOriginalConstructor()
->getMock();
$db->method( 'isOpen' )->willReturnCallback( function () use ( &$open ) {
return $open;
} );
- $db->method( 'open' )->willReturnCallback( function () use ( &$open ) {
- $open = true;
-
- return $open;
- } );
- $db->method( '__toString' )->willReturn( 'MOCK_DB' );
return $db;
}