3 class FileBackendDBRepoWrapperTest
extends MediaWikiTestCase
{
4 protected $backendName = 'foo-backend';
5 protected $repoName = 'pureTestRepo';
8 * @dataProvider getBackendPathsProvider
9 * @covers FileBackendDBRepoWrapper::getBackendPaths
11 public function testGetBackendPaths(
19 list( $dbMock, $backendMock, $wrapperMock ) = $mocks;
21 $dbMock->expects( $dbReadsExpected )
22 ->method( 'selectField' )
23 ->will( $this->returnValue( $dbReturnValue ) );
25 $newPaths = $wrapperMock->getBackendPaths( array( $originalPath ), $latest );
33 public function getBackendPathsProvider() {
34 $prefix = 'mwstore://' . $this->backendName
. '/' . $this->repoName
;
35 $mocksForCaching = $this->getMocks();
42 '96246614d75ba1703bdfd5d7660bb57407aaf5d9',
43 $prefix . '-public/f/o/foobar.jpg',
44 $prefix . '-original/9/6/2/96246614d75ba1703bdfd5d7660bb57407aaf5d9',
45 'Public path translated correctly',
51 '96246614d75ba1703bdfd5d7660bb57407aaf5d9',
52 $prefix . '-public/f/o/foobar.jpg',
53 $prefix . '-original/9/6/2/96246614d75ba1703bdfd5d7660bb57407aaf5d9',
54 'LRU cache leveraged',
60 '96246614d75ba1703bdfd5d7660bb57407aaf5d9',
61 $prefix . '-public/f/o/foobar.jpg',
62 $prefix . '-original/9/6/2/96246614d75ba1703bdfd5d7660bb57407aaf5d9',
69 '96246614d75ba1703bdfd5d7660bb57407aaf5d9',
70 $prefix . '-deleted/f/o/foobar.jpg',
71 $prefix . '-original/f/o/o/foobar',
72 'Deleted path translated correctly',
79 $prefix . '-public/b/a/baz.jpg',
80 $prefix . '-public/b/a/baz.jpg',
81 'Path left untouched if no sha1 can be found',
87 * @covers FileBackendDBRepoWrapper::getFileContentsMulti
89 public function testGetFileContentsMulti() {
90 list( $dbMock, $backendMock, $wrapperMock ) = $this->getMocks();
92 $sha1Path = 'mwstore://' . $this->backendName
. '/' . $this->repoName
93 . '-original/9/6/2/96246614d75ba1703bdfd5d7660bb57407aaf5d9';
94 $filenamePath = 'mwstore://' . $this->backendName
. '/' . $this->repoName
95 . '-public/f/o/foobar.jpg';
97 $dbMock->expects( $this->once() )
98 ->method( 'selectField' )
99 ->will( $this->returnValue( '96246614d75ba1703bdfd5d7660bb57407aaf5d9' ) );
101 $backendMock->expects( $this->once() )
102 ->method( 'getFileContentsMulti' )
103 ->will( $this->returnValue( array( $sha1Path => 'foo' ) ) );
105 $result = $wrapperMock->getFileContentsMulti( array( 'srcs' => array( $filenamePath ) ) );
108 array( $filenamePath => 'foo' ),
110 'File contents paths translated properly'
114 protected function getMocks() {
115 $dbMock = $this->getMockBuilder( 'DatabaseMysql' )
116 ->disableOriginalConstructor()
119 $backendMock = $this->getMock( 'FSFileBackend',
122 'name' => $this->backendName
,
123 'wikiId' => wfWikiId()
126 $wrapperMock = $this->getMock( 'FileBackendDBRepoWrapper',
129 'backend' => $backendMock,
130 'repoName' => $this->repoName
,
131 'dbHandleFactory' => null
134 $wrapperMock->expects( $this->any() )->method( 'getDB' )->will( $this->returnValue( $dbMock ) );
136 return array( $dbMock, $backendMock, $wrapperMock );