Completed
Pull Request — master (#168)
by
unknown
02:57
created

HiddenExtensionTest   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 123
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
c 1
b 0
f 0
lcom 1
cbo 4
dl 0
loc 123
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getContainer() 0 9 2
A testName() 0 5 1
A testHasFunctions() 0 5 1
A getTestGenerateData() 0 66 1
A testGenerate() 0 5 1
1
<?php
2
3
/*
4
 * This file is part of the ONGR package.
5
 *
6
 * (c) NFQ Technologies UAB <[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 ONGR\UtilsBundle\Tests\Unit\Twig;
13
14
use ONGR\SettingsBundle\Twig\HiddenExtension;
15
use Symfony\Component\HttpFoundation\Request;
16
use Symfony\Component\DependencyInjection\Container;
17
use Symfony\Component\DependencyInjection\ContainerInterface;
18
19
class HiddenExtensionTest extends \PHPUnit_Framework_TestCase
20
{
21
    /**
22
     * @param Request $request
23
     *
24
     * @return Container
25
     */
26
    public function getContainer(Request $request = null)
27
    {
28
        $container = new Container();
29
        if ($request !== null) {
30
            $container->set('request', $request);
31
        }
32
33
        return $container;
34
    }
35
36
    /**
37
     * Tests name.
38
     */
39
    public function testName()
40
    {
41
        $extension = new HiddenExtension(new Container());
42
        $this->assertEquals('ongr_hidden', $extension->getName());
43
    }
44
45
    /**
46
     * Test if extension has functions.
47
     */
48
    public function testHasFunctions()
49
    {
50
        $extension = new HiddenExtension($this->getContainer());
51
        $this->assertNotEmpty($extension->getFunctions());
52
    }
53
54
    /**
55
     * Data provider for testGenerate.
56
     *
57
     * @return array
58
     */
59
    public function getTestGenerateData()
60
    {
61
        $data = [];
62
        $template = 'ONGRSettingsBundle:Utils:hidden.html.twig';
63
64
        // Case 0: dont check request.
65
        $data0 = [
66
            'test1' => 1,
67
            'nested2' => [5, 4],
68
        ];
69
        $env0 = $this->getMock('stdClass', ['render']);
70
        $env0
71
            ->expects($this->once())
72
            ->method('render')
73
            ->with(
74
                $template,
75
                [
76
                    'data' => [
77
                        [
78
                            'value' => 1,
79
                            'name' => 'test1',
80
                        ],
81
                        [
82
                            'value' => 5,
83
                            'name' => 'nested2[]',
84
                        ],
85
                        [
86
                            'value' => 4,
87
                            'name' => 'nested2[]',
88
                        ],
89
                    ],
90
                ]
91
            );
92
        $container0 = $this->getContainer();
93
94
        $data[] = [$data0, false, $env0, $container0];
95
96
        // Case 1: check request.
97
        $data1 = [
98
            'test1' => 1,
99
            'test12' => 12,
100
            'nested2' => [5, 4],
101
        ];
102
        $env1 = $this->getMock('stdClass', ['render']);
103
        $env1
104
            ->expects($this->once())
105
            ->method('render')
106
            ->with(
107
                $template,
108
                [
109
                    'data' => [],
110
                ]
111
            );
112
        $container1 = $this->getContainer(
113
            new Request(
114
                [
115
                    'test12' => 'smth',
116
                    'nested2' => 'smth',
117
                ]
118
            )
119
        );
120
121
        $data[] = [$data1, true, $env1, $container1];
122
123
        return $data;
124
    }
125
126
    /**
127
     * Test for generate method.
128
     *
129
     * @param array              $data
130
     * @param bool               $checkRequest
131
     * @param \Twig_Environment  $env
132
     * @param ContainerInterface $container
133
     *
134
     * @dataProvider getTestGenerateData
135
     */
136
    public function testGenerate($data, $checkRequest, $env, $container)
137
    {
138
        $extension = new HiddenExtension($container);
139
        $extension->generate($env, $data, $checkRequest);
140
    }
141
}
142