3 namespace MediaWiki\Tests\Storage
;
5 use MediaWiki\MediaWikiServices
;
6 use MediaWiki\Storage\BlobStore
;
7 use MediaWiki\Storage\SqlBlobStore
;
8 use Wikimedia\Rdbms\LBFactory
;
9 use Wikimedia\TestingAccessWrapper
;
12 * @covers \MediaWiki\Storage\BlobStoreFactory
14 class BlobStoreFactoryTest
extends \MediaWikiUnitTestCase
{
16 /** @var LBFactory|\PHPUnit_Framework_MockObject_MockObject $lbFactoryMock */
17 private $lbFactoryMock;
19 protected function setUp() {
22 $this->lbFactoryMock
= $this->createMock( LBFactory
::class );
24 $lbFactoryMockProvider = function (): LBFactory
{
25 return $this->lbFactoryMock
;
28 $this->overrideMwServices( [ 'DBLoadBalancerFactory' => $lbFactoryMockProvider ] );
31 public function provideWikiIds() {
37 * @dataProvider provideWikiIds
39 public function testNewBlobStore( $wikiId ) {
40 $this->lbFactoryMock
->expects( $this->any() )
41 ->method( 'getMainLB' )
43 ->willReturn( $this->createMock( \LoadBalancer
::class ) );
45 $factory = MediaWikiServices
::getInstance()->getBlobStoreFactory();
46 $store = $factory->newBlobStore( $wikiId );
47 $this->assertInstanceOf( BlobStore
::class, $store );
49 // This only works as we currently know this is a SqlBlobStore object
50 $wrapper = TestingAccessWrapper
::newFromObject( $store );
51 $this->assertEquals( $wikiId, $wrapper->wikiId
);
55 * @dataProvider provideWikiIds
57 public function testNewSqlBlobStore( $wikiId ) {
58 $this->lbFactoryMock
->expects( $this->any() )
59 ->method( 'getMainLB' )
61 ->willReturn( $this->createMock( \LoadBalancer
::class ) );
63 $factory = MediaWikiServices
::getInstance()->getBlobStoreFactory();
64 $store = $factory->newSqlBlobStore( $wikiId );
65 $this->assertInstanceOf( SqlBlobStore
::class, $store );
67 $wrapper = TestingAccessWrapper
::newFromObject( $store );
68 $this->assertEquals( $wikiId, $wrapper->wikiId
);