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() {
22 return $this->getMockBuilder( ILoadBalancer
::class )
23 ->disableOriginalConstructor()->getMock();
27 * @return \PHPUnit_Framework_MockObject_MockObject|ILBFactory
29 private function getMockLoadBalancerFactory( $expectedWiki ) {
30 $mock = $this->getMockBuilder( ILBFactory
::class )
31 ->disableOriginalConstructor()->getMock();
33 $mock->expects( $this->once() )
34 ->method( 'getMainLB' )
35 ->with( $this->equalTo( $expectedWiki ) )
36 ->willReturnCallback( function ( $domain ) use ( $expectedWiki ) {
37 return $this->getMockLoadBalancer();
43 public static function provideTestGet() {
68 /** @dataProvider provideTestGet */
69 public function testGet( $tableName, $wiki, $expectedWiki ) {
70 $services = MediaWikiServices
::getInstance();
71 $db = wfGetDB( DB_MASTER
);
72 if ( $wiki === false ) {
73 $wiki2 = $db->getWikiID();
77 $names = new NameTableStoreFactory(
78 $this->getMockLoadBalancerFactory( $expectedWiki ),
79 $services->getMainWANObjectCache(),
80 LoggerFactory
::getInstance( 'NameTableStoreFactory' )
83 $table = $names->get( $tableName, $wiki );
84 $table2 = $names->get( $tableName, $wiki2 );
85 $this->assertSame( $table, $table2 );
86 $this->assertInstanceOf( NameTableStore
::class, $table );
90 * The next three integration tests verify that the schema information is correct by loading
91 * the relevant information from the database.
94 public function testIntegratedGetChangeTagDef() {
95 $services = MediaWikiServices
::getInstance();
96 $factory = $services->getNameTableStoreFactory();
97 $store = $factory->getChangeTagDef();
98 $this->assertType( 'array', $store->getMap() );
101 public function testIntegratedGetContentModels() {
102 $services = MediaWikiServices
::getInstance();
103 $factory = $services->getNameTableStoreFactory();
104 $store = $factory->getContentModels();
105 $this->assertType( 'array', $store->getMap() );
108 public function testIntegratedGetSlotRoles() {
109 $services = MediaWikiServices
::getInstance();
110 $factory = $services->getNameTableStoreFactory();
111 $store = $factory->getSlotRoles();
112 $this->assertType( 'array', $store->getMap() );