testCustomClient()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 1
eloc 15
nc 1
nop 0
1
<?php
2
3
namespace Fruitware\YandexGeocoderBundle\Tests\DependencyInjection;
4
5
use Fruitware\YandexGeocoderBundle\DependencyInjection\FruitwareYandexGeocoderExtension;
6
use Symfony\Component\DependencyInjection\ContainerBuilder;
7
8
class FruitwareYandexGeocoderExtensionTest extends \PHPUnit_Framework_TestCase
9
{
10
    /**
11
     * @var ContainerBuilder
12
     */
13
    private $container;
14
    /**
15
     * @var FruitwareYandexGeocoderExtension
16
     */
17
    private $extension;
18
19
    public function setUp()
20
    {
21
        $this->container = new ContainerBuilder();
22
        $this->extension = new FruitwareYandexGeocoderExtension();
23
    }
24
25
    public function tearDown()
26
    {
27
        unset($this->container, $this->extension);
28
    }
29
30
    public function testDefaultParameters()
31
    {
32
        $this->extension->load(array(), $this->container);
33
34
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.key'));
35
        $this->assertNull($this->container->getParameter($this->extension->getAlias().'.key'));
36
37
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.version'));
38
        $this->assertEquals('1.x', $this->container->getParameter($this->extension->getAlias().'.version'));
39
40
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.lang'));
41
        $this->assertEquals('ru-RU', $this->container->getParameter($this->extension->getAlias().'.lang'));
42
43
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.kind'));
44
        $this->assertNull($this->container->getParameter($this->extension->getAlias().'.kind'));
45
    }
46
47
    public function testCustomLang()
48
    {
49
        $config = array(
50
            $this->extension->getAlias() => array('lang' => 'uk-UA'),
51
        );
52
53
        $this->extension->load($config, $this->container);
54
55
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.lang'));
56
        $this->assertEquals('uk-UA', $this->container->getParameter($this->extension->getAlias().'.lang'));
57
    }
58
59
    public function testUndefinedLangException()
60
    {
61
        $config = array(
62
            $this->extension->getAlias() => array('lang' => null),
63
        );
64
65
        $this->setExpectedException('Symfony\Component\Config\Definition\Exception\InvalidConfigurationException');
66
        $this->extension->load($config, $this->container);
67
    }
68
69
    public function testKey()
70
    {
71
        $config = array(
72
            $this->extension->getAlias() => array('key' => 'test'),
73
        );
74
75
        $this->extension->load($config, $this->container);
76
77
        $this->assertTrue($this->container->hasParameter($this->extension->getAlias().'.key'));
78
    }
79
80
    public function testDefaultClient()
81
    {
82
        $this->extension->load(array(), $this->container);
83
84
        $client = $this->extension->getAlias().'.service.client';
85
        $this->assertTrue($this->container->hasDefinition($client));
86
87
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setLang'));
88
        $this->assertParameter('1.x', $this->extension->getAlias().'.version');
89
        $this->assertParameter('ru-RU', $this->extension->getAlias().'.lang');
90
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setToken'));
91
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setKind'));
92
        $this->assertFalse($this->container->getDefinition($client)->hasMethodCall('load'));
93
    }
94
95
    public function testCustomClient()
96
    {
97
        $config = array(
98
            $this->extension->getAlias() => array(
99
                'key' => 'test_key',
100
                'lang' => 'uk-UA',
101
            ),
102
        );
103
104
        $this->extension->load($config, $this->container);
105
106
        $client = $this->extension->getAlias().'.service.client';
107
        $this->assertTrue($this->container->hasDefinition($client));
108
109
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setLang'));
110
        $this->assertParameter('1.x', $this->extension->getAlias().'.version');
111
        $this->assertParameter('uk-UA', $this->extension->getAlias().'.lang');
112
        $this->assertParameter('test_key', $this->extension->getAlias().'.key');
113
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setToken'));
114
        $this->assertTrue($this->container->getDefinition($client)->hasMethodCall('setKind'));
115
        $this->assertFalse($this->container->getDefinition($client)->hasMethodCall('load'));
116
    }
117
118
    /**
119
     * @param string $value
120
     * @param string $key
121
     */
122
    private function assertParameter($value, $key)
123
    {
124
        $this->assertEquals($value, $this->container->getParameter($key), sprintf('%s parameter is correct', $key));
125
    }
126
}