wiki.techinc.nl/tests/phpunit/includes/jobqueue/JobFactoryTest.php
James D. Forrester ad06527fb4 Reorg: Namespace the Title class
This is moderately messy.

Process was principally:

* xargs rg --files-with-matches '^use Title;' | grep 'php$' | \
  xargs -P 1 -n 1 sed -i -z 's/use Title;/use MediaWiki\\Title\\Title;/1'
* rg --files-without-match 'MediaWiki\\Title\\Title;' . | grep 'php$' | \
  xargs rg --files-with-matches 'Title\b' | \
  xargs -P 1 -n 1 sed -i -z 's/\nuse /\nuse MediaWiki\\Title\\Title;\nuse /1'
* composer fix

Then manual fix-ups for a few files that don't have any use statements.

Bug: T166010
Follows-Up: Ia5d8cb759dc3bc9e9bbe217d0fb109e2f8c4101a
Change-Id: If8fc9d0d95fc1a114021e282a706fc3e7da3524b
2023-03-02 08:46:53 -05:00

66 lines
1.9 KiB
PHP

<?php
use MediaWiki\JobQueue\JobFactory;
use MediaWiki\Title\Title;
/**
* @author Addshore
*/
class JobFactoryTest extends MediaWikiIntegrationTestCase {
/**
* @dataProvider provideTestNewJob
*
* @covers MediaWiki\JobQueue\JobFactory::newJob
*/
public function testNewJob( $handler, $expectedClass ) {
$specs = [
'testdummy' => $handler
];
$factory = new JobFactory(
$this->getServiceContainer()->getObjectFactory(),
$specs
);
$job = $factory->newJob( 'testdummy', Title::newMainPage(), [] );
$this->assertInstanceOf( $expectedClass, $job );
$job2 = $factory->newJob( 'testdummy', [] );
$this->assertInstanceOf( $expectedClass, $job2 );
$this->assertNotSame( $job, $job2, 'should not reuse instance' );
$job3 = $factory->newJob( 'testdummy', [ 'namespace' => NS_MAIN, 'title' => 'JobTestTitle' ] );
$this->assertInstanceOf( $expectedClass, $job3 );
$this->assertNotSame( $job, $job3, 'should not reuse instance' );
}
public function provideTestNewJob() {
return [
'class name, no title' => [ 'NullJob', NullJob::class ],
'class name with title' => [ DeleteLinksJob::class, DeleteLinksJob::class ],
'closure' => [ static function ( Title $title, array $params ) {
return new NullJob( $params );
}, NullJob::class ],
'function' => [ [ $this, 'newNullJob' ], NullJob::class ],
'object spec, no title' => [ [ 'class' => 'NullJob' ], NullJob::class ],
'object spec with title' => [ [ 'class' => DeleteLinksJob::class ], DeleteLinksJob::class ],
'object spec with no title and not subclass of GenericParameterJob' => [
[
'class' => ParsoidCachePrewarmJob::class,
'services' => [
'ParsoidOutputAccess',
'PageStore',
'RevisionLookup'
],
'needsPage' => false
],
ParsoidCachePrewarmJob::class
]
];
}
public function newNullJob( Title $title, array $params ) {
return new NullJob( $params );
}
}