4 * These tests should work regardless of $wgCapitalLinks
5 * @todo Split tests into providers and test methods
8 class LocalFileTest
extends MediaWikiTestCase
{
10 protected function setUp() {
13 $this->setMwGlobals( 'wgCapitalLinks', true );
17 'directory' => '/testdir',
20 'transformVia404' => false,
21 'backend' => new FSFileBackend( [
22 'name' => 'local-backend',
23 'wikiId' => wfWikiID(),
25 'cont1' => "/testdir/local-backend/tempimages/cont1",
26 'cont2' => "/testdir/local-backend/tempimages/cont2"
30 $this->repo_hl0
= new LocalRepo( [ 'hashLevels' => 0 ] +
$info );
31 $this->repo_hl2
= new LocalRepo( [ 'hashLevels' => 2 ] +
$info );
32 $this->repo_lc
= new LocalRepo( [ 'initialCapital' => false ] +
$info );
33 $this->file_hl0
= $this->repo_hl0
->newFile( 'test!' );
34 $this->file_hl2
= $this->repo_hl2
->newFile( 'test!' );
35 $this->file_lc
= $this->repo_lc
->newFile( 'test!' );
39 * @covers File::getHashPath
41 public function testGetHashPath() {
42 $this->assertEquals( '', $this->file_hl0
->getHashPath() );
43 $this->assertEquals( 'a/a2/', $this->file_hl2
->getHashPath() );
44 $this->assertEquals( 'c/c4/', $this->file_lc
->getHashPath() );
48 * @covers File::getRel
50 public function testGetRel() {
51 $this->assertEquals( 'Test!', $this->file_hl0
->getRel() );
52 $this->assertEquals( 'a/a2/Test!', $this->file_hl2
->getRel() );
53 $this->assertEquals( 'c/c4/test!', $this->file_lc
->getRel() );
57 * @covers File::getUrlRel
59 public function testGetUrlRel() {
60 $this->assertEquals( 'Test%21', $this->file_hl0
->getUrlRel() );
61 $this->assertEquals( 'a/a2/Test%21', $this->file_hl2
->getUrlRel() );
62 $this->assertEquals( 'c/c4/test%21', $this->file_lc
->getUrlRel() );
66 * @covers File::getArchivePath
68 public function testGetArchivePath() {
70 'mwstore://local-backend/test-public/archive',
71 $this->file_hl0
->getArchivePath()
74 'mwstore://local-backend/test-public/archive/a/a2',
75 $this->file_hl2
->getArchivePath()
78 'mwstore://local-backend/test-public/archive/!',
79 $this->file_hl0
->getArchivePath( '!' )
82 'mwstore://local-backend/test-public/archive/a/a2/!',
83 $this->file_hl2
->getArchivePath( '!' )
88 * @covers File::getThumbPath
90 public function testGetThumbPath() {
92 'mwstore://local-backend/test-thumb/Test!',
93 $this->file_hl0
->getThumbPath()
96 'mwstore://local-backend/test-thumb/a/a2/Test!',
97 $this->file_hl2
->getThumbPath()
100 'mwstore://local-backend/test-thumb/Test!/x',
101 $this->file_hl0
->getThumbPath( 'x' )
104 'mwstore://local-backend/test-thumb/a/a2/Test!/x',
105 $this->file_hl2
->getThumbPath( 'x' )
110 * @covers File::getArchiveUrl
112 public function testGetArchiveUrl() {
113 $this->assertEquals( '/testurl/archive', $this->file_hl0
->getArchiveUrl() );
114 $this->assertEquals( '/testurl/archive/a/a2', $this->file_hl2
->getArchiveUrl() );
115 $this->assertEquals( '/testurl/archive/%21', $this->file_hl0
->getArchiveUrl( '!' ) );
116 $this->assertEquals( '/testurl/archive/a/a2/%21', $this->file_hl2
->getArchiveUrl( '!' ) );
120 * @covers File::getThumbUrl
122 public function testGetThumbUrl() {
123 $this->assertEquals( '/testurl/thumb/Test%21', $this->file_hl0
->getThumbUrl() );
124 $this->assertEquals( '/testurl/thumb/a/a2/Test%21', $this->file_hl2
->getThumbUrl() );
125 $this->assertEquals( '/testurl/thumb/Test%21/x', $this->file_hl0
->getThumbUrl( 'x' ) );
126 $this->assertEquals( '/testurl/thumb/a/a2/Test%21/x', $this->file_hl2
->getThumbUrl( 'x' ) );
130 * @covers File::getArchiveVirtualUrl
132 public function testGetArchiveVirtualUrl() {
133 $this->assertEquals( 'mwrepo://test/public/archive', $this->file_hl0
->getArchiveVirtualUrl() );
135 'mwrepo://test/public/archive/a/a2',
136 $this->file_hl2
->getArchiveVirtualUrl()
139 'mwrepo://test/public/archive/%21',
140 $this->file_hl0
->getArchiveVirtualUrl( '!' )
143 'mwrepo://test/public/archive/a/a2/%21',
144 $this->file_hl2
->getArchiveVirtualUrl( '!' )
149 * @covers File::getThumbVirtualUrl
151 public function testGetThumbVirtualUrl() {
152 $this->assertEquals( 'mwrepo://test/thumb/Test%21', $this->file_hl0
->getThumbVirtualUrl() );
153 $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21', $this->file_hl2
->getThumbVirtualUrl() );
155 'mwrepo://test/thumb/Test%21/%21',
156 $this->file_hl0
->getThumbVirtualUrl( '!' )
159 'mwrepo://test/thumb/a/a2/Test%21/%21',
160 $this->file_hl2
->getThumbVirtualUrl( '!' )
165 * @covers File::getUrl
167 public function testGetUrl() {
168 $this->assertEquals( '/testurl/Test%21', $this->file_hl0
->getUrl() );
169 $this->assertEquals( '/testurl/a/a2/Test%21', $this->file_hl2
->getUrl() );
173 * @covers ::wfLocalFile
175 public function testWfLocalFile() {
176 $file = wfLocalFile( "File:Some_file_that_probably_doesn't exist.png" );
179 $this->isInstanceOf( 'LocalFile' ),
180 'wfLocalFile() returns LocalFile for valid Titles'