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

ProviderPoolTest   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 6
dl 0
loc 86
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Tests\Unit\Provider;
4
5
use MediaMonks\SonataMediaBundle\Model\MediaInterface;
6
use MediaMonks\SonataMediaBundle\Provider\ProviderInterface;
7
use MediaMonks\SonataMediaBundle\Provider\ProviderPool;
8
use MediaMonks\SonataMediaBundle\Tests\Unit\MockeryTrait;
9
use Mockery as m;
10
11
class ProviderPoolTest extends \PHPUnit_Framework_TestCase
12
{
13
    use MockeryTrait;
14
15
    public function testGetProvider()
16
    {
17
        $provider = $this->getProviderMock();
18
        $providerPool = new ProviderPool();
19
20
        $providerPool->addProvider($provider);
21
        $this->assertEquals($providerPool->getProvider('Test'), $provider);
22
    }
23
24
    public function testAddProvider()
25
    {
26
        $provider = $this->getProviderMock();
27
        $providerPool = new ProviderPool();
28
29
        $this->assertEquals(0, count($providerPool->getProviders()));
30
        $providerPool->addProvider($provider);
31
        $this->assertEquals(1, count($providerPool->getProviders()));
32
        $this->assertEquals($provider, $providerPool->getProviders()['Test']);
33
    }
34
35
    public function testAddProviders()
36
    {
37
        $provider = $this->getProviderMock();
38
        $provider2 = $this->getProviderMock('Test 2');
39
40
        $providerPool = new ProviderPool();
41
        $providerPool->addProviders([$provider, $provider2]);
42
43
        $this->assertEquals($provider, $providerPool->getProviders()['Test']);
44
        $this->assertEquals($provider2, $providerPool->getProviders()['Test 2']);
45
        $this->assertEquals(2, count($providerPool->getProviders()));
46
    }
47
48
    public function testSetProviders()
49
    {
50
        $provider = $this->getProviderMock();
51
        $provider2 = $this->getProviderMock('Test 2');
52
53
        $providerPool = new ProviderPool();
54
        $providerPool->setProviders([$provider, $provider2]);
55
56
        $this->assertEquals($provider, $providerPool->getProviders()['Test']);
57
        $this->assertEquals($provider2, $providerPool->getProviders()['Test 2']);
58
        $this->assertEquals(2, count($providerPool->getProviders()));
59
60
        $providerPool->setProviders([$provider, $provider2]);
61
        $this->assertEquals(2, count($providerPool->getProviders()));
62
    }
63
64
    public function testGetByMedia()
65
    {
66
        $media = m::mock(MediaInterface::class);
67
        $media->shouldReceive('getProvider')->once()->andReturn('Test');
68
69
        $provider = $this->getProviderMock();
70
71
        $providerPool = new ProviderPool();
72
        $providerPool->addProvider($provider);
73
74
        $this->assertEquals($provider, $providerPool->getByMedia($media));
75
    }
76
77
    public function testGetUnknownProvider()
78
    {
79
        $this->setExpectedException(\InvalidArgumentException::class);
80
81
        $providerPool = new ProviderPool();
82
        $providerPool->getProvider('Test');
83
    }
84
85
    /**
86
     * @param string $name
87
     * @return ProviderInterface
88
     */
89
    private function getProviderMock($name = 'Test')
90
    {
91
        $provider = m::mock(ProviderInterface::class);
92
        $provider->shouldReceive('getName')->andReturn($name);
93
94
        return $provider;
95
    }
96
}
97