123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace MediaWiki\Tests\Storage;
- use MediaWiki\Logger\LoggerFactory;
- use MediaWiki\MediaWikiServices;
- use MediaWiki\Storage\NameTableStore;
- use MediaWiki\Storage\NameTableStoreFactory;
- use MediaWikiTestCase;
- use Wikimedia\Rdbms\ILBFactory;
- use Wikimedia\Rdbms\ILoadBalancer;
- /**
- * @covers MediaWiki\Storage\NameTableStoreFactory
- * @group Database
- */
- class NameTableStoreFactoryTest extends MediaWikiTestCase {
- /**
- * @return \PHPUnit_Framework_MockObject_MockObject|ILoadBalancer
- */
- private function getMockLoadBalancer() {
- return $this->getMockBuilder( ILoadBalancer::class )
- ->disableOriginalConstructor()->getMock();
- }
- /**
- * @return \PHPUnit_Framework_MockObject_MockObject|ILBFactory
- */
- private function getMockLoadBalancerFactory( $expectedWiki ) {
- $mock = $this->getMockBuilder( ILBFactory::class )
- ->disableOriginalConstructor()->getMock();
- $mock->expects( $this->once() )
- ->method( 'getMainLB' )
- ->with( $this->equalTo( $expectedWiki ) )
- ->willReturnCallback( function ( $domain ) use ( $expectedWiki ) {
- return $this->getMockLoadBalancer();
- } );
- 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 = MediaWikiServices::getInstance();
- $db = wfGetDB( DB_MASTER );
- if ( $wiki === false ) {
- $wiki2 = $db->getWikiID();
- } else {
- $wiki2 = $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 = MediaWikiServices::getInstance();
- $factory = $services->getNameTableStoreFactory();
- $store = $factory->getChangeTagDef();
- $this->assertType( 'array', $store->getMap() );
- }
- public function testIntegratedGetContentModels() {
- $services = MediaWikiServices::getInstance();
- $factory = $services->getNameTableStoreFactory();
- $store = $factory->getContentModels();
- $this->assertType( 'array', $store->getMap() );
- }
- public function testIntegratedGetSlotRoles() {
- $services = MediaWikiServices::getInstance();
- $factory = $services->getNameTableStoreFactory();
- $store = $factory->getSlotRoles();
- $this->assertType( 'array', $store->getMap() );
- }
- }
|