/
PoolTest.php
86 lines (72 loc) · 2.82 KB
/
PoolTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
declare(strict_types=1);
/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Sonata\MediaBundle\Tests\Provider;
use Gaufrette\Filesystem;
use PHPUnit\Framework\TestCase;
use Sonata\MediaBundle\CDN\Server;
use Sonata\MediaBundle\Generator\IdGenerator;
use Sonata\MediaBundle\Metadata\MetadataBuilderInterface;
use Sonata\MediaBundle\Provider\FileProvider;
use Sonata\MediaBundle\Provider\MediaProviderInterface;
use Sonata\MediaBundle\Provider\Pool;
use Sonata\MediaBundle\Thumbnail\FormatThumbnail;
/**
* @author Javier Spagnoletti <phansys@gmail.com>
*/
class PoolTest extends TestCase
{
public function testGetEmptyProviderName(): void
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Provider name cannot be empty, did you forget to call setProviderName() in your Media object?');
$mediaPool = $this
->getMockBuilder(Pool::class)
->disableOriginalConstructor()
->onlyMethods([])
->getMock();
$mediaPool->getProvider(null);
}
public function testGetWithEmptyProviders(): void
{
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('Unable to retrieve provider named "provider_a" since there are no providers configured yet.');
$mediaPool = $this
->getMockBuilder(Pool::class)
->disableOriginalConstructor()
->onlyMethods([])
->getMock();
$mediaPool->getProvider('provider_a');
}
public function testGetInvalidProviderName(): void
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Unable to retrieve the provider named "provider_c". Available providers are "provider_a", "provider_b".');
$mediaPool = $this
->getMockBuilder(Pool::class)
->disableOriginalConstructor()
->onlyMethods([])
->getMock();
$mediaPool->setProviders([
'provider_a' => $this->createProvider('provider_a'),
'provider_b' => $this->createProvider('provider_b'),
]);
$mediaPool->getProvider('provider_c');
}
protected function createProvider(string $name): MediaProviderInterface
{
$filesystem = $this->createMock(Filesystem::class);
$cdn = new Server('/uploads/media');
$generator = new IdGenerator();
$thumbnail = new FormatThumbnail('jpg');
$metadata = $this->createMock(MetadataBuilderInterface::class);
return new FileProvider($name, $filesystem, $cdn, $generator, $thumbnail, [], [], $metadata);
}
}