Separate MediaWiki unit and integration tests
[lhc/web/wiklou.git] / tests / phpunit / unit / includes / Storage / BlobStoreFactoryTest.php
1 <?php
2
3 namespace MediaWiki\Tests\Storage;
4
5 use MediaWiki\MediaWikiServices;
6 use MediaWiki\Storage\BlobStore;
7 use MediaWiki\Storage\SqlBlobStore;
8 use Wikimedia\Rdbms\LBFactory;
9 use Wikimedia\TestingAccessWrapper;
10
11 /**
12 * @covers \MediaWiki\Storage\BlobStoreFactory
13 */
14 class BlobStoreFactoryTest extends \MediaWikiUnitTestCase {
15
16 /** @var LBFactory|\PHPUnit_Framework_MockObject_MockObject $lbFactoryMock */
17 private $lbFactoryMock;
18
19 protected function setUp() {
20 parent::setUp();
21
22 $this->lbFactoryMock = $this->createMock( LBFactory::class );
23
24 $lbFactoryMockProvider = function (): LBFactory {
25 return $this->lbFactoryMock;
26 };
27
28 $this->overrideMwServices( [ 'DBLoadBalancerFactory' => $lbFactoryMockProvider ] );
29 }
30
31 public function provideWikiIds() {
32 yield [ false ];
33 yield [ 'someWiki' ];
34 }
35
36 /**
37 * @dataProvider provideWikiIds
38 */
39 public function testNewBlobStore( $wikiId ) {
40 $this->lbFactoryMock->expects( $this->any() )
41 ->method( 'getMainLB' )
42 ->with( $wikiId )
43 ->willReturn( $this->createMock( \LoadBalancer::class ) );
44
45 $factory = MediaWikiServices::getInstance()->getBlobStoreFactory();
46 $store = $factory->newBlobStore( $wikiId );
47 $this->assertInstanceOf( BlobStore::class, $store );
48
49 // This only works as we currently know this is a SqlBlobStore object
50 $wrapper = TestingAccessWrapper::newFromObject( $store );
51 $this->assertEquals( $wikiId, $wrapper->wikiId );
52 }
53
54 /**
55 * @dataProvider provideWikiIds
56 */
57 public function testNewSqlBlobStore( $wikiId ) {
58 $this->lbFactoryMock->expects( $this->any() )
59 ->method( 'getMainLB' )
60 ->with( $wikiId )
61 ->willReturn( $this->createMock( \LoadBalancer::class ) );
62
63 $factory = MediaWikiServices::getInstance()->getBlobStoreFactory();
64 $store = $factory->newSqlBlobStore( $wikiId );
65 $this->assertInstanceOf( SqlBlobStore::class, $store );
66
67 $wrapper = TestingAccessWrapper::newFromObject( $store );
68 $this->assertEquals( $wikiId, $wrapper->wikiId );
69 }
70 }