2021-07-16 17:32:30 +00:00
|
|
|
<?php
|
|
|
|
|
|
2021-07-20 09:02:45 +00:00
|
|
|
namespace MediaWiki\Tests\Unit\Storage;
|
2021-07-16 17:32:30 +00:00
|
|
|
|
|
|
|
|
use MediaWiki\Config\ServiceOptions;
|
2022-08-17 20:33:06 +00:00
|
|
|
use MediaWiki\MainConfigNames;
|
2021-06-23 10:43:46 +00:00
|
|
|
use MediaWiki\Page\WikiPageFactory;
|
2021-07-16 17:32:30 +00:00
|
|
|
use MediaWiki\Storage\DerivedPageDataUpdater;
|
|
|
|
|
use MediaWiki\Storage\PageUpdater;
|
|
|
|
|
use MediaWiki\Storage\PageUpdaterFactory;
|
2021-07-20 09:02:45 +00:00
|
|
|
use MediaWiki\Tests\Unit\MockServiceDependenciesTrait;
|
2021-07-16 17:32:30 +00:00
|
|
|
use MediaWiki\User\UserIdentityValue;
|
|
|
|
|
use MediaWikiUnitTestCase;
|
|
|
|
|
use Wikimedia\Rdbms\LBFactory;
|
2021-07-20 09:02:45 +00:00
|
|
|
use Wikimedia\Rdbms\LoadBalancer;
|
2021-07-16 17:32:30 +00:00
|
|
|
use WikiPage;
|
|
|
|
|
|
|
|
|
|
/**
|
2021-07-27 02:45:11 +00:00
|
|
|
* @covers \MediaWiki\Storage\PageUpdaterFactory
|
2021-07-16 17:32:30 +00:00
|
|
|
*/
|
|
|
|
|
class PageUpdaterFactoryTest extends MediaWikiUnitTestCase {
|
2021-07-20 09:02:45 +00:00
|
|
|
use MockServiceDependenciesTrait;
|
|
|
|
|
|
2021-07-16 17:32:30 +00:00
|
|
|
private function getPageUpdaterFactory() {
|
|
|
|
|
$config = [
|
2022-08-17 20:33:06 +00:00
|
|
|
MainConfigNames::ArticleCountMethod => null,
|
|
|
|
|
MainConfigNames::RCWatchCategoryMembership => null,
|
|
|
|
|
MainConfigNames::PageCreationLog => null,
|
|
|
|
|
MainConfigNames::UseAutomaticEditSummaries => null,
|
|
|
|
|
MainConfigNames::ManualRevertSearchRadius => null,
|
|
|
|
|
MainConfigNames::UseRCPatrol => null,
|
|
|
|
|
MainConfigNames::ParsoidCacheConfig => [
|
2022-06-17 14:00:27 +00:00
|
|
|
'WarmParsoidParserCache' => false
|
|
|
|
|
],
|
2021-07-16 17:32:30 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$lb = $this->createNoOpMock( LoadBalancer::class );
|
|
|
|
|
$lbFactory = $this->createNoOpMock( LBFactory::class, [ 'getMainLB' ] );
|
|
|
|
|
$lbFactory->method( 'getMainLB' )->willReturn( $lb );
|
|
|
|
|
|
2021-06-23 10:43:46 +00:00
|
|
|
$wikiPageFactory = $this->createNoOpMock( WikiPageFactory::class, [ 'newFromTitle' ] );
|
|
|
|
|
$wikiPageFactory->method( 'newFromTitle' )->willReturnArgument( 0 );
|
|
|
|
|
|
2021-07-20 09:02:45 +00:00
|
|
|
return $this->newServiceInstance(
|
|
|
|
|
PageUpdaterFactory::class,
|
|
|
|
|
[
|
|
|
|
|
'loadbalancerFactory' => $lbFactory,
|
2021-06-23 10:43:46 +00:00
|
|
|
'wikiPageFactory' => $wikiPageFactory,
|
2021-07-20 09:02:45 +00:00
|
|
|
'options' => new ServiceOptions(
|
|
|
|
|
PageUpdaterFactory::CONSTRUCTOR_OPTIONS,
|
|
|
|
|
$config
|
|
|
|
|
),
|
|
|
|
|
'softwareTags' => [],
|
|
|
|
|
]
|
2021-07-16 17:32:30 +00:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testNewDerivedPageDataUpdater() {
|
|
|
|
|
$page = $this->createNoOpMock( WikiPage::class );
|
|
|
|
|
|
|
|
|
|
$factory = $this->getPageUpdaterFactory();
|
|
|
|
|
$derivedPageDataUpdater = $factory->newDerivedPageDataUpdater( $page );
|
|
|
|
|
|
|
|
|
|
$this->assertInstanceOf( DerivedPageDataUpdater::class, $derivedPageDataUpdater );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testNewPageUpdater() {
|
|
|
|
|
$page = $this->createNoOpMock( WikiPage::class, [ 'canExist' ] );
|
|
|
|
|
$page->method( 'canExist' )->willReturn( true );
|
|
|
|
|
|
|
|
|
|
$user = new UserIdentityValue( 0, 'Dummy' );
|
|
|
|
|
|
|
|
|
|
$factory = $this->getPageUpdaterFactory();
|
|
|
|
|
$pageUpdater = $factory->newPageUpdater( $page, $user );
|
|
|
|
|
|
|
|
|
|
$this->assertInstanceOf( PageUpdater::class, $pageUpdater );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testNewPageUpdaterForDerivedPageDataUpdater() {
|
|
|
|
|
$page = $this->createNoOpMock( WikiPage::class, [ 'canExist' ] );
|
|
|
|
|
$page->method( 'canExist' )->willReturn( true );
|
|
|
|
|
|
|
|
|
|
$user = new UserIdentityValue( 0, 'Dummy' );
|
|
|
|
|
|
|
|
|
|
$factory = $this->getPageUpdaterFactory();
|
|
|
|
|
$derivedPageDataUpdater = $factory->newDerivedPageDataUpdater( $page );
|
|
|
|
|
$pageUpdater = $factory->newPageUpdaterForDerivedPageDataUpdater(
|
|
|
|
|
$page,
|
|
|
|
|
$user,
|
|
|
|
|
$derivedPageDataUpdater
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$this->assertInstanceOf( PageUpdater::class, $pageUpdater );
|
|
|
|
|
}
|
|
|
|
|
}
|