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