3 namespace MediaWiki\Tests\Storage
;
5 use MediaWiki\Logger\LoggerFactory
;
6 use MediaWiki\MediaWikiServices
;
7 use MediaWiki\Storage\NameTableStore
;
8 use MediaWiki\Storage\NameTableStoreFactory
;
10 use Wikimedia\Rdbms\ILBFactory
;
11 use Wikimedia\Rdbms\ILoadBalancer
;
14 * @covers MediaWiki\Storage\NameTableStoreFactory
17 class NameTableStoreFactoryTest
extends MediaWikiTestCase
{
19 * @return \PHPUnit_Framework_MockObject_MockObject|ILoadBalancer
21 private function getMockLoadBalancer( $localDomain ) {
22 $mock = $this->getMockBuilder( ILoadBalancer
::class )
23 ->disableOriginalConstructor()->getMock();
25 $mock->expects( $this->any() )
26 ->method( 'getLocalDomainID' )
27 ->willReturn( $localDomain );
33 * @return \PHPUnit_Framework_MockObject_MockObject|ILBFactory
35 private function getMockLoadBalancerFactory( $expectedWiki ) {
36 $mock = $this->getMockBuilder( ILBFactory
::class )
37 ->disableOriginalConstructor()->getMock();
39 $lbFactory = MediaWikiServices
::getInstance()->getDBLoadBalancerFactory();
40 $localDomain = $lbFactory->getLocalDomainID();
42 $mock->expects( $this->any() )->method( 'getLocalDomainID' )->willReturn( $localDomain );
44 $mock->expects( $this->once() )
45 ->method( 'getMainLB' )
46 ->with( $this->equalTo( $expectedWiki ) )
47 ->willReturnCallback( function ( $domain ) use ( $localDomain ) {
48 return $this->getMockLoadBalancer( $localDomain );
54 public static function provideTestGet() {
79 /** @dataProvider provideTestGet */
80 public function testGet( $tableName, $wiki, $expectedWiki ) {
81 $services = MediaWikiServices
::getInstance();
82 $wiki2 = ( $wiki === false )
83 ?
$services->getDBLoadBalancerFactory()->getLocalDomainID()
85 $names = new NameTableStoreFactory(
86 $this->getMockLoadBalancerFactory( $expectedWiki ),
87 $services->getMainWANObjectCache(),
88 LoggerFactory
::getInstance( 'NameTableStoreFactory' )
91 $table = $names->get( $tableName, $wiki );
92 $table2 = $names->get( $tableName, $wiki2 );
93 $this->assertSame( $table, $table2 );
94 $this->assertInstanceOf( NameTableStore
::class, $table );
98 * The next three integration tests verify that the schema information is correct by loading
99 * the relevant information from the database.
102 public function testIntegratedGetChangeTagDef() {
103 $services = MediaWikiServices
::getInstance();
104 $factory = $services->getNameTableStoreFactory();
105 $store = $factory->getChangeTagDef();
106 $this->assertType( 'array', $store->getMap() );
109 public function testIntegratedGetContentModels() {
110 $services = MediaWikiServices
::getInstance();
111 $factory = $services->getNameTableStoreFactory();
112 $store = $factory->getContentModels();
113 $this->assertType( 'array', $store->getMap() );
116 public function testIntegratedGetSlotRoles() {
117 $services = MediaWikiServices
::getInstance();
118 $factory = $services->getNameTableStoreFactory();
119 $store = $factory->getSlotRoles();
120 $this->assertType( 'array', $store->getMap() );