/**
  * @test
  * @dataProvider renderReturnsFilesForFoldersDataProvider
  */
 public function renderReturnsFilesForFolders($configuration, $expected)
 {
     $folderMap = array();
     $fileCount = 1;
     for ($i = 1; $i < 4; $i++) {
         $fileArray = array();
         for ($j = 1; $j < 4; $j++) {
             $file = $this->getMock(\TYPO3\CMS\Core\Resource\File::class, array(), array(), '', FALSE);
             $file->expects($this->any())->method('getName')->will($this->returnValue('File ' . $fileCount));
             $file->expects($this->any())->method('hasProperty')->with('name')->will($this->returnValue(TRUE));
             $file->expects($this->any())->method('getProperty')->with('name')->will($this->returnValue('File ' . $fileCount));
             $fileArray[] = $file;
             $fileCount++;
         }
         $folder = $this->getMock(\TYPO3\CMS\Core\Resource\Folder::class, array(), array(), '', FALSE);
         $folder->expects($this->any())->method('getFiles')->will($this->returnValue($fileArray));
         $folderMap[] = array($i . ':myfolder/', $folder);
     }
     $resourceFactory = $this->getMock(\TYPO3\CMS\Core\Resource\ResourceFactory::class);
     $resourceFactory->expects($this->any())->method('getFolderObjectFromCombinedIdentifier')->will($this->returnValueMap($folderMap));
     $fileCollector = $this->getMock(FileCollector::class, array('getResourceFactory'));
     $fileCollector->expects($this->any())->method('getResourceFactory')->will($this->returnValue($resourceFactory));
     $this->subject->expects($this->any())->method('getFileCollector')->will($this->returnValue($fileCollector));
     $this->assertSame($expected, $this->subject->render($configuration));
 }
 /**
  * @test
  * @dataProvider renderReturnsFilesForFoldersDataProvider
  */
 public function renderReturnsFilesForFolders($configuration, $expected, $recursive = false)
 {
     $folderMap = array();
     $folders = array();
     $fileCount = 1;
     $filesArrayForFolder = [];
     for ($i = 1; $i < 4; $i++) {
         $filesArrayForFolder[$i] = [];
         for ($j = 1; $j < 4; $j++) {
             $file = $this->getMock(File::class, [], [], '', false);
             $file->expects($this->any())->method('getName')->will($this->returnValue('File ' . $fileCount));
             $file->expects($this->any())->method('hasProperty')->with('name')->will($this->returnValue(true));
             $file->expects($this->any())->method('getProperty')->with('name')->will($this->returnValue('File ' . $fileCount));
             $filesArrayForFolder[$i][] = $file;
             $fileCount++;
         }
         $folder = $this->getMock(Folder::class, array(), array(), '', false);
         if ($recursive) {
             if ($i < 3) {
                 $folders[$i] = $folder;
                 $folderMap[$i] = array('1:myfolder/mysubfolder-' . $i . '/', $folder);
             } else {
                 $folder->expects($this->any())->method('getSubfolders')->will($this->returnValue($folders));
                 $folderMap[$i] = array('1:myfolder/', $folder);
             }
         } else {
             $folderMap[$i] = array($i . ':myfolder/', $folder);
         }
     }
     foreach ($folderMap as $i => $folderMapInfo) {
         if ($i < 3 || !$recursive) {
             $folderMapInfo[1]->expects($this->any())->method('getFiles')->will($this->returnValue($filesArrayForFolder[$i]));
         } else {
             $recursiveFiles = array_merge($filesArrayForFolder[3], $filesArrayForFolder[1], $filesArrayForFolder[2]);
             $folderMapInfo[1]->expects($this->any())->method('getFiles')->will($this->returnValue($recursiveFiles));
         }
     }
     $resourceFactory = $this->getMock(ResourceFactory::class);
     $resourceFactory->expects($this->any())->method('getFolderObjectFromCombinedIdentifier')->will($this->returnValueMap($folderMap));
     $fileCollector = $this->getMock(FileCollector::class, array('getResourceFactory'));
     $fileCollector->expects($this->any())->method('getResourceFactory')->will($this->returnValue($resourceFactory));
     $this->subject->expects($this->any())->method('getFileCollector')->will($this->returnValue($fileCollector));
     $this->assertSame($expected, $this->subject->render($configuration));
 }