Merge "Actually assign suppression-related rights to 'suppress' group"
[lhc/web/wiklou.git] / tests / phpunit / includes / Storage / NameTableStoreFactoryTest.php
1 <?php
2
3 namespace MediaWiki\Tests\Storage;
4
5 use MediaWiki\Logger\LoggerFactory;
6 use MediaWiki\MediaWikiServices;
7 use MediaWiki\Storage\NameTableStore;
8 use MediaWiki\Storage\NameTableStoreFactory;
9 use MediaWikiTestCase;
10 use Wikimedia\Rdbms\ILBFactory;
11 use Wikimedia\Rdbms\ILoadBalancer;
12
13 /**
14 * @covers MediaWiki\Storage\NameTableStoreFactory
15 * @group Database
16 */
17 class NameTableStoreFactoryTest extends MediaWikiTestCase {
18 /**
19 * @return \PHPUnit_Framework_MockObject_MockObject|ILoadBalancer
20 */
21 private function getMockLoadBalancer( $localDomain ) {
22 $mock = $this->getMockBuilder( ILoadBalancer::class )
23 ->disableOriginalConstructor()->getMock();
24
25 $mock->expects( $this->any() )
26 ->method( 'getLocalDomainID' )
27 ->willReturn( $localDomain );
28
29 return $mock;
30 }
31
32 /**
33 * @return \PHPUnit_Framework_MockObject_MockObject|ILBFactory
34 */
35 private function getMockLoadBalancerFactory( $expectedWiki ) {
36 $mock = $this->getMockBuilder( ILBFactory::class )
37 ->disableOriginalConstructor()->getMock();
38
39 $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
40 $localDomain = $lbFactory->getLocalDomainID();
41
42 $mock->expects( $this->any() )->method( 'getLocalDomainID' )->willReturn( $localDomain );
43
44 $mock->expects( $this->once() )
45 ->method( 'getMainLB' )
46 ->with( $this->equalTo( $expectedWiki ) )
47 ->willReturnCallback( function ( $domain ) use ( $localDomain ) {
48 return $this->getMockLoadBalancer( $localDomain );
49 } );
50
51 return $mock;
52 }
53
54 public static function provideTestGet() {
55 return [
56 [
57 'change_tag_def',
58 false,
59 false,
60 ],
61 [
62 'content_models',
63 false,
64 false,
65 ],
66 [
67 'slot_roles',
68 false,
69 false,
70 ],
71 [
72 'change_tag_def',
73 'test7245',
74 'test7245',
75 ],
76 ];
77 }
78
79 /** @dataProvider provideTestGet */
80 public function testGet( $tableName, $wiki, $expectedWiki ) {
81 $services = MediaWikiServices::getInstance();
82 $wiki2 = ( $wiki === false )
83 ? $services->getDBLoadBalancerFactory()->getLocalDomainID()
84 : $wiki;
85 $names = new NameTableStoreFactory(
86 $this->getMockLoadBalancerFactory( $expectedWiki ),
87 $services->getMainWANObjectCache(),
88 LoggerFactory::getInstance( 'NameTableStoreFactory' )
89 );
90
91 $table = $names->get( $tableName, $wiki );
92 $table2 = $names->get( $tableName, $wiki2 );
93 $this->assertSame( $table, $table2 );
94 $this->assertInstanceOf( NameTableStore::class, $table );
95 }
96
97 /*
98 * The next three integration tests verify that the schema information is correct by loading
99 * the relevant information from the database.
100 */
101
102 public function testIntegratedGetChangeTagDef() {
103 $services = MediaWikiServices::getInstance();
104 $factory = $services->getNameTableStoreFactory();
105 $store = $factory->getChangeTagDef();
106 $this->assertType( 'array', $store->getMap() );
107 }
108
109 public function testIntegratedGetContentModels() {
110 $services = MediaWikiServices::getInstance();
111 $factory = $services->getNameTableStoreFactory();
112 $store = $factory->getContentModels();
113 $this->assertType( 'array', $store->getMap() );
114 }
115
116 public function testIntegratedGetSlotRoles() {
117 $services = MediaWikiServices::getInstance();
118 $factory = $services->getNameTableStoreFactory();
119 $store = $factory->getSlotRoles();
120 $this->assertType( 'array', $store->getMap() );
121 }
122 }