Completed
Pull Request — master (#1163)
by Grégoire
02:51
created

testThumbnailHasAllNecessaryAttributes()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 34
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 23
nc 1
nop 0
dl 0
loc 34
rs 8.8571
c 0
b 0
f 0
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
use Sonata\MediaBundle\Model\MediaInterface;
13
use Sonata\MediaBundle\Twig\Extension\MediaExtension;
14
15
/**
16
 * Class MediaExtensionTest.
17
 *
18
 * Unit test of MediaExtension class.
19
 *
20
 * @author Geza Buza <[email protected]>
21
 */
22
class MediaExtensionTest extends \PHPUnit_Framework_TestCase
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
23
{
24
    /**
25
     * @var Sonata\MediaBundle\Provider\MediaProviderInterface
26
     */
27
    private $provider;
28
29
    /**
30
     * @var Twig_TemplateInterface
31
     */
32
    private $template;
33
34
    /**
35
     * @var Twig_Environment
36
     */
37
    private $environment;
38
39
    /**
40
     * @var Sonata\MediaBundle\Model\Media
41
     */
42
    private $media;
43
44
    public function testThumbnailHasAllNecessaryAttributes()
45
    {
46
        $mediaExtension = new MediaExtension($this->getMediaService(), $this->getMediaManager());
47
        $mediaExtension->initRuntime($this->getEnvironment());
48
49
        $media = $this->getMedia();
50
        $format = 'png';
51
        $options = array(
52
            'title' => 'Test title',
53
            'alt' => 'Test title',
54
        );
55
56
        $provider = $this->getProvider();
57
        $provider->expects($this->once())->method('generatePublicUrl')->with($media, $format)
58
            ->willReturn('http://some.url.com');
59
60
        $template = $this->getTemplate();
61
        $template->expects($this->once())
62
            ->method('render')
63
            ->with(
64
                $this->equalTo(
65
                    array(
66
                        'media' => $media,
67
                        'options' => array(
68
                            'title' => 'Test title',
69
                            'alt' => 'Test title',
70
                            'src' => 'http://some.url.com',
71
                        ),
72
                    )
73
                )
74
            );
75
76
        $mediaExtension->thumbnail($media, $format, $options);
77
    }
78
79
    public function getMediaService()
80
    {
81
        $mediaService = $this->getMockBuilder('Sonata\MediaBundle\Provider\Pool')
82
            ->disableOriginalConstructor()
83
            ->getMock();
84
        $mediaService->method('getProvider')->willReturn($this->getProvider());
85
86
        return $mediaService;
87
    }
88
89
    public function getMediaManager()
90
    {
91
        return $this->getMock('Sonata\CoreBundle\Model\ManagerInterface');
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
92
    }
93
94
    public function getProvider()
95
    {
96
        if (is_null($this->provider)) {
97
            $this->provider = $this->getMock('Sonata\MediaBundle\Provider\MediaProviderInterface');
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
98
            $this->provider->method('getFormatName')->will($this->returnArgument(1));
99
        }
100
101
        return $this->provider;
102
    }
103
104
    public function getTemplate()
105
    {
106
        if (is_null($this->template)) {
107
            $this->template = $this->getMock('Twig_TemplateInterface');
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
108
        }
109
110
        return $this->template;
111
    }
112
113
    public function getEnvironment()
114
    {
115
        if (is_null($this->environment)) {
116
            $this->environment = $this->getMockBuilder('Twig_Environment')
117
                ->disableOriginalConstructor()
118
                ->getMock();
119
            $this->environment->method('loadTemplate')->willReturn($this->getTemplate());
120
        }
121
122
        return $this->environment;
123
    }
124
125
    public function getMedia()
126
    {
127
        if (is_null($this->media)) {
128
            $this->media = $this->getMock('Sonata\MediaBundle\Model\Media');
0 ignored issues
show
Deprecated Code introduced by
The method PHPUnit_Framework_TestCase::getMock() has been deprecated with message: Method deprecated since Release 5.4.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
129
            $this->media->method('getProviderStatus')->willReturn(MediaInterface::STATUS_OK);
130
        }
131
132
        return $this->media;
133
    }
134
}
135