+ return Job::factory( 'null', $title, $params );
+ }
+
+ /**
+ * @covers Job::factory
+ * @covers Job::__construct()
+ */
+ public function testJobSignatureGeneric() {
+ $testPage = Title::makeTitle( NS_PROJECT, 'x' );
+ $blankTitle = Title::makeTitle( NS_SPECIAL, '' );
+ $params = [ 'z' => 1, 'lives' => 1, 'usleep' => 0 ];
+ $paramsWithTitle = $params + [ 'namespace' => NS_PROJECT, 'title' => 'x' ];
+
+ $job = new NullJob( [ 'namespace' => NS_PROJECT, 'title' => 'x' ] + $params );
+ $this->assertEquals( $testPage->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $paramsWithTitle );
+
+ $job = Job::factory( 'null', $testPage, $params );
+ $this->assertEquals( $blankTitle->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $params );
+
+ $job = Job::factory( 'null', $paramsWithTitle );
+ $this->assertEquals( $testPage->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $paramsWithTitle );
+
+ $job = Job::factory( 'null', $params );
+ $this->assertTrue( $blankTitle->equals( $job->getTitle() ) );
+ $this->assertJobParamsMatch( $job, $params );
+ }
+
+ /**
+ * @covers Job::factory
+ * @covers Job::__construct()
+ */
+ public function testJobSignatureTitleBased() {
+ $testPage = Title::makeTitle( NS_PROJECT, 'x' );
+ $blankTitle = Title::makeTitle( NS_SPECIAL, '' );
+ $params = [ 'z' => 1, 'causeAction' => 'unknown', 'causeAgent' => 'unknown' ];
+ $paramsWithTitle = $params + [ 'namespace' => NS_PROJECT, 'title' => 'x' ];
+
+ $job = new RefreshLinksJob( $testPage, $params );
+ $this->assertEquals( $testPage->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertSame( $testPage, $job->getTitle() );
+ $this->assertJobParamsMatch( $job, $paramsWithTitle );
+ $this->assertSame( $testPage, $job->getTitle() );
+
+ $job = Job::factory( 'refreshLinks', $testPage, $params );
+ $this->assertEquals( $testPage->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $paramsWithTitle );
+
+ $job = Job::factory( 'refreshLinks', $paramsWithTitle );
+ $this->assertEquals( $testPage->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $paramsWithTitle );
+
+ $job = Job::factory( 'refreshLinks', $params );
+ $this->assertTrue( $blankTitle->equals( $job->getTitle() ) );
+ $this->assertJobParamsMatch( $job, $params );
+ }
+
+ /**
+ * @covers Job::factory
+ * @covers Job::__construct()
+ */
+ public function testJobSignatureTitleBasedIncomplete() {
+ $testPage = Title::makeTitle( NS_PROJECT, 'x' );
+ $blankTitle = Title::makeTitle( NS_SPECIAL, '' );
+ $params = [ 'z' => 1, 'causeAction' => 'unknown', 'causeAgent' => 'unknown' ];
+
+ $job = new RefreshLinksJob( $testPage, $params + [ 'namespace' => 0 ] );
+ $this->assertEquals( $blankTitle->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $params + [ 'namespace' => 0 ] );
+
+ $job = new RefreshLinksJob( $testPage, $params + [ 'title' => 'x' ] );
+ $this->assertEquals( $blankTitle->getPrefixedText(), $job->getTitle()->getPrefixedText() );
+ $this->assertJobParamsMatch( $job, $params + [ 'title' => 'x' ] );