diff options
Diffstat (limited to 'tests/phpunit/includes/filerepo/file/FileTest.php')
-rw-r--r-- | tests/phpunit/includes/filerepo/file/FileTest.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/phpunit/includes/filerepo/file/FileTest.php b/tests/phpunit/includes/filerepo/file/FileTest.php index 76be387442ff..590ed89c0f49 100644 --- a/tests/phpunit/includes/filerepo/file/FileTest.php +++ b/tests/phpunit/includes/filerepo/file/FileTest.php @@ -1,5 +1,7 @@ <?php +use MediaWiki\Page\PageIdentityValue; + class FileTest extends MediaWikiMediaTestCase { /** @@ -442,4 +444,41 @@ class FileTest extends MediaWikiMediaTestCase { ], ]; } + + public function provideNormalizeTitle() { + yield [ 'some name.jpg', 'Some_name.jpg' ]; + yield [ new TitleValue( NS_FILE, 'Some_name.jpg' ), 'Some_name.jpg' ]; + yield [ new TitleValue( NS_MEDIA, 'Some_name.jpg' ), 'Some_name.jpg' ]; + yield [ new PageIdentityValue( 0, NS_FILE, 'Some_name.jpg', false ), 'Some_name.jpg' ]; + } + + /** + * @covers File::normalizeTitle + * @dataProvider provideNormalizeTitle + */ + public function testNormalizeTitle( $title, $expected ) { + $actual = File::normalizeTitle( $title ); + + $this->assertSame( NS_FILE, $actual->getNamespace() ); + $this->assertSame( $expected, $actual->getDBkey() ); + } + + public function provideNormalizeTitleFails() { + yield [ '' ]; + yield [ '#' ]; + yield [ new TitleValue( NS_USER, 'Some_name.jpg' ) ]; + yield [ new PageIdentityValue( 0, NS_USER, 'Some_name.jpg', false ) ]; + } + + /** + * @covers File::normalizeTitle + * @dataProvider provideNormalizeTitleFails + */ + public function testNormalizeTitleFails( $title ) { + $actual = File::normalizeTitle( $title ); + $this->assertNull( $actual ); + + $this->expectException( MWException::class ); + File::normalizeTitle( $title, 'exception' ); + } } |