testRenderIcon()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the core-bundle package.
5
 *
6
 * (c) 2018 WEBEWEB
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 WBW\Bundle\CoreBundle\Tests\Twig\Extension\Assets;
13
14
use Twig\Extension\ExtensionInterface;
15
use Twig\Node\Node;
16
use Twig\TwigFilter;
17
use Twig\TwigFunction;
18
use WBW\Bundle\CoreBundle\Tests\AbstractTestCase;
19
use WBW\Bundle\CoreBundle\Twig\Extension\Assets\MaterialDesignIconicFontTwigExtension;
20
21
/**
22
 * Material Design Iconic Font Twig extension test.
23
 *
24
 * @author webeweb <https://github.com/webeweb>
25
 * @package WBW\Bundle\CoreBundle\Tests\Twig\Extension\Assets
26
 */
27
class MaterialDesignIconicFontTwigExtensionTest extends AbstractTestCase {
28
29
    /**
30
     * Test getFilters()
31
     *
32
     * @return void
33
     */
34
    public function testGetFilters(): void {
35
36
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
37
38
        $res = $obj->getFilters();
39
        $this->assertCount(4, $res);
40
41
        $i = -1;
42
43
        $this->assertInstanceOf(TwigFilter::class, $res[++$i]);
44
        $this->assertEquals("materialDesignIconicFontList", $res[$i]->getName());
45
        $this->assertEquals([$obj, "materialDesignIconicFontListFilter"], $res[$i]->getCallable());
46
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
47
48
        $this->assertInstanceOf(TwigFilter::class, $res[++$i]);
49
        $this->assertEquals("mdiFontList", $res[$i]->getName());
50
        $this->assertEquals([$obj, "materialDesignIconicFontListFilter"], $res[$i]->getCallable());
51
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
52
53
        $this->assertInstanceOf(TwigFilter::class, $res[++$i]);
54
        $this->assertEquals("materialDesignIconicFontListIcon", $res[$i]->getName());
55
        $this->assertEquals([$obj, "materialDesignIconicFontListIconFilter"], $res[$i]->getCallable());
56
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
57
58
        $this->assertInstanceOf(TwigFilter::class, $res[++$i]);
59
        $this->assertEquals("mdiFontListIcon", $res[$i]->getName());
60
        $this->assertEquals([$obj, "materialDesignIconicFontListIconFilter"], $res[$i]->getCallable());
61
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
62
    }
63
64
    /**
65
     * Test getFunctions()
66
     *
67
     * @return void
68
     */
69
    public function testGetFunctions(): void {
70
71
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
72
73
        $res = $obj->getFunctions();
74
        $this->assertCount(2, $res);
75
76
        $i = -1;
77
78
        $this->assertInstanceOf(TwigFunction::class, $res[++$i]);
79
        $this->assertEquals("materialDesignIconicFontIcon", $res[$i]->getName());
80
        $this->assertEquals([$obj, "materialDesignIconicFontIconFunction"], $res[$i]->getCallable());
81
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
82
83
        $this->assertInstanceOf(TwigFunction::class, $res[++$i]);
84
        $this->assertEquals("mdiIcon", $res[$i]->getName());
85
        $this->assertEquals([$obj, "materialDesignIconicFontIconFunction"], $res[$i]->getCallable());
86
        $this->assertEquals(["html"], $res[$i]->getSafe(new Node()));
87
    }
88
89
    /**
90
     * Test materialDesignIconicFontIconFunction()
91
     *
92
     * @return void
93
     */
94
    public function testMaterialDesignIconicFontIconFunction(): void {
95
96
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
97
98
        $arg = [
99
            "name"       => "camera-retro",
100
            "size"       => "lg",
101
            "fixedWidth" => true,
102
            "border"     => "border-circle",
103
            "pull"       => "left",
104
            "spin"       => "spin",
105
            "rotate"     => "180",
106
            "flip"       => "horizontal",
107
            "style"      => "color: #FFFFFF;",
108
        ];
109
        $exp = '<i class="zmdi zmdi-camera-retro zmdi-hc-lg zmdi-hc-fw zmdi-hc-border-circle pull-left zmdi-hc-spin zmdi-hc-rotate-180 zmdi-hc-flip-horizontal" style="color: #FFFFFF;"></i>';
110
111
        $this->assertEquals($exp, $obj->materialDesignIconicFontIconFunction($arg));
112
    }
113
114
    /**
115
     * Test materialDesignIconicFontIconFunction()
116
     *
117
     * @return void
118
     */
119
    public function testMaterialDesignIconicFontIconFunctionWithoutArguments(): void {
120
121
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
122
123
        $arg = [];
124
        $exp = '<i class="zmdi zmdi-home"></i>';
125
126
        $this->assertEquals($exp, $obj->materialDesignIconicFontIconFunction($arg));
127
    }
128
129
    /**
130
     * Test materialDesignIconicFontListFilter()
131
     *
132
     * @return void
133
     */
134
    public function testMaterialDesignIconicFontListFilter(): void {
135
136
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
137
138
        $arg = $obj->materialDesignIconicFontListIconFilter($obj->materialDesignIconicFontIconFunction(), "content");
139
        $exp = '<ul class="zmdi-hc-ul"><li><i class="zmdi-hc-li zmdi zmdi-home"></i>content</li></ul>';
140
141
        $this->assertEquals($exp, $obj->materialDesignIconicFontListFilter($arg));
142
    }
143
144
    /**
145
     * Test materialDesignIconicFontListIconFilter()
146
     *
147
     * @return void
148
     */
149
    public function testMaterialDesignIconicFontListIconFilter(): void {
150
151
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
152
153
        $arg = $obj->materialDesignIconicFontIconFunction();
154
        $exp = '<li><i class="zmdi-hc-li zmdi zmdi-home"></i></li>';
155
156
        $this->assertEquals($exp, $obj->materialDesignIconicFontListIconFilter($arg, null));
157
    }
158
159
    /**
160
     * Test materialDesignIconicFontListIconFilter()
161
     *
162
     * @return void
163
     */
164
    public function testMaterialDesignIconicFontListIconFilterWithContent(): void {
165
166
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
167
168
        $arg = $obj->materialDesignIconicFontIconFunction();
169
        $exp = '<li><i class="zmdi-hc-li zmdi zmdi-home"></i>content</li>';
170
171
        $this->assertEquals($exp, $obj->materialDesignIconicFontListIconFilter($arg, "content"));
172
    }
173
174
    /**
175
     * Test renderIcon()
176
     *
177
     * @return void
178
     */
179
    public function testRenderIcon(): void {
180
181
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
182
183
        $exp = '<i class="zmdi zmdi-camera-retro" style="color: #FFFFFF;"></i>';
184
185
        $this->assertEquals($exp, $obj->renderIcon("camera-retro", "color: #FFFFFF;"));
186
    }
187
188
    /**
189
     * Test __construct()
190
     *
191
     * @return void
192
     */
193
    public function test__construct(): void {
194
195
        $this->assertEquals("wbw.core.twig.extension.assets.material_design_iconic_font", MaterialDesignIconicFontTwigExtension::SERVICE_NAME);
196
197
        $obj = new MaterialDesignIconicFontTwigExtension($this->twigEnvironment);
198
199
        $this->assertInstanceOf(ExtensionInterface::class, $obj);
200
201
        $this->assertSame($this->twigEnvironment, $obj->getTwigEnvironment());
202
    }
203
}
204