assertInstanceOf( MultiTitleFilter::class, new MultiTitleFilter() ); } /** * @covers ::__construct */ public function testConstructTitleFactory() { $this->assertInstanceOf( MultiTitleFilter::class, new MultiTitleFilter( new TitleFactory() ) ); } /** * @covers ::filterForForm * @dataProvider filterForFormDataProvider */ public function testFilterForForm( $expected, $inputValue, $newFromIDsReturnValue ) { $titleFactory = $this->getMockBuilder( TitleFactory::class ) ->disableOriginalConstructor() ->getMock(); $titleFactory->method( 'newFromIDs' ) ->willReturn( $newFromIDsReturnValue ); $multiTitleFilter = new MultiTitleFilter( $titleFactory ); $this->assertSame( $expected, $multiTitleFilter->filterForForm( $inputValue ) ); } public function filterForFormDataProvider() :array { return [ [ '', '', [] ], [ '', "2\n\3\n\42", [] ], [ "Foo\nBar", "2\n\3\n\42", [ $this->getMockTitle( 'Foo' ), $this->getMockTitle( 'Bar' ) ] ] ]; } /** * @covers ::filterFromForm * @dataProvider filterFromFormDataProvider */ public function testFilterFromForm( $expected, $titles, $newFromTextValue ) { $titleFactory = $this->getMockBuilder( TitleFactory::class ) ->disableOriginalConstructor() ->getMock(); $titleFactory->method( 'newFromText' ) ->willReturn( $newFromTextValue ); $multiTitleFilter = new MultiTitleFilter( $titleFactory ); $this->assertSame( $expected, $multiTitleFilter->filterFromForm( $titles ) ); } public function filterFromFormDataProvider() :array { return [ [ null, '', $this->getMockTitle( 'Foo' ), ], [ "42", "Foo", $this->getMockTitle( 'Foo', 42 ) ], [ "", "Bar", $this->getMockTitle( 'Bar', 0 ) ] ]; } private function getMockTitle( $getTextResult, $articleId = 0 ) { $title = $this->getMockBuilder( Title::class ) ->disableOriginalConstructor() ->getMock(); $title->method( 'getPrefixedText' )->willReturn( $getTextResult ); $title->method( 'getArticleID' )->willReturn( $articleId ); return $title; } }