Completed
Push — master ( 8e1573...db6321 )
by
unknown
16:08 queued 08:39
created

FileProviderTest::testGetImageByExtension()   B

Complexity

Conditions 3
Paths 3

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
rs 8.8571
c 0
b 0
f 0
cc 3
eloc 18
nc 3
nop 0
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Tests\Unit\Provider;
4
5
use League\Flysystem\Filesystem;
6
use League\Glide\Filesystem\FilesystemException;
7
use MediaMonks\SonataMediaBundle\Provider\AbstractProvider;
8
use MediaMonks\SonataMediaBundle\Provider\FileProvider;
9
use Mockery as m;
10
use Symfony\Component\HttpFoundation\File\UploadedFile;
11
12
class FileProviderTest extends \PHPUnit_Framework_TestCase
13
{
14
    public function testGetImageByExtension()
15
    {
16
        $method = $this->getMethod('getImageByExtension');
17
        $provider = new FileProvider();
18
19
        $data = [
20
            'archive.png' => ['zip', 'rar', 'tar', 'gz'],
21
            'audio.png' => ['wav', 'mp3', 'flac', 'aac', 'aiff', 'm4a', 'ogg', 'oga', 'wma'],
22
            'code.png' => ['php', 'html', 'css', 'js', 'vb', 'phar', 'py', 'jar', 'json', 'yml'],
23
            'excel.png' => ['xls', 'xlt', 'xlm', 'xlsx', 'xlsm', 'xltx', 'xltm'],
24
            'image.png' => ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'tiff', 'ai', 'psd'],
25
            'movie.png' => ['mp4', 'avi', 'mkv', 'mpg', 'mpeg'],
26
            'pdf.png' => ['pdf'],
27
            'powerpoint.png' => ['ppt', 'pot', 'pos', 'pps', 'pptx', 'pptm', 'potx', 'potm', 'ppam', 'ppsx', 'ppsm', 'sldx', 'sldm'],
28
            'text.png' => ['txt'],
29
            'word.png' => ['doc', 'dot', 'wbk', 'docx', 'docm', 'dotx', 'dotm', 'docb'],
30
            'default.png' => ['foo', 'bar']
31
        ];
32
33
        foreach ($data as $expected => $extensions) {
34
            foreach ($extensions as $extension) {
35
                $this->assertEquals($expected, $method->invokeArgs($provider, [$extension]));
36
            }
37
        }
38
    }
39
40
    public function testSupports()
41
    {
42
        $provider = new FileProvider();
43
        $this->assertTrue($provider->supports(AbstractProvider::SUPPORT_DOWNLOAD));
44
        $this->assertFalse($provider->supports(AbstractProvider::SUPPORT_EMBED));
45
        $this->assertTrue($provider->supports(AbstractProvider::SUPPORT_IMAGE));
46
        $this->assertFalse($provider->supports('foo'));
47
    }
48
49
    public function testWriteToFilesystem()
50
    {
51
        $this->setExpectedException(FilesystemException::class);
52
53
        $filesystem = m::mock(Filesystem::class);
54
        $filesystem->shouldReceive('writeStream')->andReturn(0);
55
56
        $file = m::mock(UploadedFile::class);
57
        $file->shouldReceive('getRealPath')->andReturn('/foo');
58
59
        $provider = new FileProvider();
60
        $provider->setFilesystem($filesystem);
61
        $method = $this->getMethod('writeToFilesystem');
62
        $method->invokeArgs($provider, [$file, 'foo']);
63
    }
64
65
    protected static function getMethod($name)
66
    {
67
        $class = new \ReflectionClass(FileProvider::class);
68
        $method = $class->getMethod($name);
69
        $method->setAccessible(true);
70
        return $method;
71
    }
72
}
73