Completed
Push — master ( 6c0aaa...a6043f )
by
unknown
22:11
created

LiipImagineThumbnailTest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
c 1
b 0
f 0
lcom 0
cbo 5
dl 0
loc 83
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testGenerate() 0 51 1
B testLegacyGenerate() 0 24 1
1
<?php
2
3
/*
4
 * This file is part of the Sonata Project package.
5
 *
6
 * (c) Thomas Rabaix <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sonata\MediaBundle\Tests\Security;
13
14
use Gaufrette\Adapter\InMemory;
15
use Gaufrette\File;
16
use Gaufrette\Filesystem;
17
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
18
use PHPUnit\Framework\TestCase;
19
use Sonata\MediaBundle\Model\MediaInterface;
20
use Sonata\MediaBundle\Provider\MediaProviderInterface;
21
use Sonata\MediaBundle\Resizer\ResizerInterface;
22
use Sonata\MediaBundle\Tests\Entity\Media;
23
use Sonata\MediaBundle\Thumbnail\LiipImagineThumbnail;
24
use Symfony\Component\Routing\RouterInterface;
25
26
class LiipImagineThumbnailTest extends TestCase
27
{
28
    public function testGenerate()
29
    {
30
        $cacheManager = $this->prophesize(CacheManager::class);
31
        $cacheManager->getBrowserPath()->willReturn('cache/media/default/0011/24/ASDASDAS.png');
32
33
        $thumbnail = new LiipImagineThumbnail($cacheManager);
34
35
        $filesystem = new Filesystem(new InMemory(['myfile' => 'content']));
36
        $referenceFile = new File('myfile', $filesystem);
37
38
        $formats = [
39
          'admin' => ['height' => 50, 'width' => 50, 'quality' => 100],
40
          'mycontext_medium' => ['height' => 500, 'width' => 500, 'quality' => 100],
41
          'anothercontext_large' => ['height' => 500, 'width' => 500, 'quality' => 100],
42
        ];
43
44
        $resizer = $this->prophesize(ResizerInterface::class);
45
        $resizer->resize()->willReturn(true);
46
47
        $media = new Media();
48
        $media->setName('ASDASDAS.png');
49
        $media->setProviderReference('ASDASDAS.png');
50
        $media->setId(1023456);
51
        $media->setContext('default');
52
53
        $provider = $this->prophesize(MediaProviderInterface::class);
54
        $provider->requireThumbnails()->willReturn(true);
55
        $provider->getReferenceFile()->willReturn($referenceFile);
56
        $provider->getFormats()->willReturn($formats);
57
        $provider->getResizer()->willReturn($resizer);
58
        $provider->generatePrivateUrl()->willReturn('/my/private/path');
59
        $provider->generatePublicUrl()->willReturn('/my/public/path');
60
        $provider->getFilesystem()->willReturn($filesystem);
61
        $provider->getReferenceImage($media)->willReturn('default/0011/24/ASDASDAS.png');
62
        $provider->getCdnPath(
63
            'default/0011/24/ASDASDAS.png',
64
            null
65
        )->willReturn('cache/media/default/0011/24/ASDASDAS.png');
66
67
        $thumbnail->generate($provider->reveal(), $media);
68
        $this->assertSame('default/0011/24/ASDASDAS.png', $thumbnail->generatePublicUrl(
69
            $provider->reveal(),
70
            $media,
71
            MediaProviderInterface::FORMAT_ADMIN
72
        ));
73
        $this->assertSame('cache/media/default/0011/24/ASDASDAS.png', $thumbnail->generatePublicUrl(
74
            $provider->reveal(),
75
            $media,
76
            'mycontext_medium'
77
        ));
78
    }
79
80
    /**
81
     * @group legacy
82
     * @expectedDeprecation Using an instance of Symfony\Component\Routing\RouterInterface is deprecated since version 3.3 and will be removed in 4.0. Use Liip\ImagineBundle\Imagine\Cache\CacheManager.
83
     */
84
    public function testLegacyGenerate()
85
    {
86
        $router = $this->prophesize(RouterInterface::class);
87
        $router->generate(
88
            '_imagine_medium',
89
            ['path' => '/some/path/42_medium.jpg']
90
        )->willReturn('/imagine/medium/some/path/42_medium.jpg');
91
        $thumbnail = new LiipImagineThumbnail($router->reveal());
92
        $provider = $this->prophesize(MediaProviderInterface::class);
93
        $media = $this->prophesize(MediaInterface::class);
94
        $media->getId()->willReturn(42);
95
        $media->getCdnIsFlushable()->willReturn(true);
96
        $format = 'medium';
97
        $provider->getReferenceImage($media->reveal())->willReturn('/some/image.jpg');
98
        $provider->generatePath($media->reveal())->willReturn('/some/path');
99
        $provider->getCdnPath(
100
            '/imagine/medium/some/path/42_medium.jpg',
101
            true
102
        )->willReturn('some/cdn/path');
103
        $this->assertSame(
104
            'some/cdn/path',
105
            $thumbnail->generatePublicUrl($provider->reveal(), $media->reveal(), $format)
106
        );
107
    }
108
}
109