Completed
Pull Request — master (#4851)
by Grégoire
15:01
created

testAssetsCanBeAddedAndRemoved()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 66
Code Lines 54

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 66
rs 9.3191
c 1
b 0
f 0
cc 1
eloc 54
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Sonata Project package.
7
 *
8
 * (c) Thomas Rabaix <[email protected]>
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Sonata\AdminBundle\Tests\DependencyInjection;
15
16
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
17
use Sonata\AdminBundle\Bridge\Exporter\AdminExporter;
18
use Sonata\AdminBundle\DependencyInjection\SonataAdminExtension;
19
20
class SonataAdminExtensionTest extends AbstractExtensionTestCase
21
{
22
    public function testHasServiceDefinitionForLockExtension(): void
23
    {
24
        $this->container->setParameter('kernel.bundles', []);
25
        $this->load(['options' => ['lock_protection' => true]]);
26
        $this->assertContainerBuilderHasService('sonata.admin.lock.extension');
27
    }
28
29
    public function testNotHasServiceDefinitionForLockExtension(): void
30
    {
31
        $this->container->setParameter('kernel.bundles', []);
32
        $this->load(['options' => ['lock_protection' => false]]);
33
        $this->assertContainerBuilderNotHasService('sonata.admin.lock.extension');
34
    }
35
36
    public function testLoadsExporterServiceDefinitionWhenExporterBundleIsRegistered(): void
37
    {
38
        $this->container->setParameter('kernel.bundles', ['SonataExporterBundle' => 'whatever']);
39
        $this->load();
40
        $this->assertContainerBuilderHasService(
41
            'sonata.admin.admin_exporter',
42
            AdminExporter::class
43
        );
44
    }
45
46
    public function testHasSecurityRoleParameters(): void
47
    {
48
        $this->container->setParameter('kernel.bundles', []);
49
        $this->load();
50
51
        $this->assertContainerBuilderHasParameter('sonata.admin.configuration.security.role_admin');
52
        $this->assertContainerBuilderHasParameter('sonata.admin.configuration.security.role_super_admin');
53
    }
54
55
    public function testExtraStylesheetsGetAdded(): void
56
    {
57
        $this->container->setParameter('kernel.bundles', []);
58
        $this->load([
59
            'assets' => [
60
                'extra_stylesheets' => [
61
                    'foo/bar.css',
62
                    'bar/quux.css',
63
                ],
64
            ],
65
        ]);
66
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
67
68
        $this->assertEquals($stylesheets, [
69
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
70
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
71
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
72
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
73
            'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
74
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
75
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
76
            'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
77
            'bundles/sonatacore/vendor/select2/select2.css',
78
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
79
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
80
            'bundles/sonataadmin/css/styles.css',
81
            'bundles/sonataadmin/css/layout.css',
82
            'bundles/sonataadmin/css/tree.css',
83
            'foo/bar.css',
84
            'bar/quux.css',
85
        ]);
86
    }
87
88
    public function testRemoveStylesheetsGetRemoved(): void
89
    {
90
        $this->container->setParameter('kernel.bundles', []);
91
        $this->load([
92
            'assets' => [
93
                'remove_stylesheets' => [
94
                    'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
95
                    'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
96
                ],
97
            ],
98
        ]);
99
100
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
101
102
        $this->assertEquals($stylesheets, [
103
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
104
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
105
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
106
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
107
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
108
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
109
            'bundles/sonatacore/vendor/select2/select2.css',
110
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
111
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
112
            'bundles/sonataadmin/css/styles.css',
113
            'bundles/sonataadmin/css/layout.css',
114
            'bundles/sonataadmin/css/tree.css',
115
        ]);
116
    }
117
118
    public function testExtraJavascriptsGetAdded(): void
119
    {
120
        $this->container->setParameter('kernel.bundles', []);
121
        $this->load([
122
            'assets' => [
123
                'extra_javascripts' => [
124
                    'foo/bar.js',
125
                    'bar/quux.js',
126
                ],
127
            ],
128
        ]);
129
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
130
131
        $this->assertEquals($javascripts, [
132
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
133
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
134
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
135
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
136
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
137
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
138
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
139
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
140
            'bundles/sonataadmin/jquery/jquery.confirmExit.js',
141
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
142
            'bundles/sonatacore/vendor/select2/select2.min.js',
143
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
144
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
145
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
146
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
147
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
148
            'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
149
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
150
            'bundles/sonataadmin/Admin.js',
151
            'bundles/sonataadmin/treeview.js',
152
            'foo/bar.js',
153
            'bar/quux.js',
154
        ]);
155
    }
156
157
    public function testRemoveJavascriptsGetRemoved(): void
158
    {
159
        $this->container->setParameter('kernel.bundles', []);
160
        $this->load([
161
            'assets' => [
162
                'remove_javascripts' => [
163
                    'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
164
                    'bundles/sonataadmin/jquery/jquery.confirmExit.js',
165
                ],
166
            ],
167
        ]);
168
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
169
170
        $this->assertEquals($javascripts, [
171
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
172
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
173
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
174
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
175
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
176
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
177
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
178
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
179
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
180
            'bundles/sonatacore/vendor/select2/select2.min.js',
181
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
182
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
183
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
184
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
185
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
186
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
187
            'bundles/sonataadmin/Admin.js',
188
            'bundles/sonataadmin/treeview.js',
189
        ]);
190
    }
191
192
    public function testAssetsCanBeAddedAndRemoved(): void
193
    {
194
        $this->container->setParameter('kernel.bundles', []);
195
        $this->load([
196
            'assets' => [
197
                'extra_stylesheets' => [
198
                    'foo/bar.css',
199
                    'bar/quux.css',
200
                ],
201
                'remove_stylesheets' => [
202
                    'bundles/sonataadmin/vendor/admin-lte/dist/css/skins/skin-black.min.css',
203
                    'bundles/sonataadmin/vendor/jqueryui/themes/base/jquery-ui.css',
204
                ],
205
                'extra_javascripts' => [
206
                    'foo/bar.js',
207
                    'bar/quux.js',
208
                ],
209
                'remove_javascripts' => [
210
                    'bundles/sonataadmin/vendor/readmore-js/readmore.min.js',
211
                    'bundles/sonataadmin/jquery/jquery.confirmExit.js',
212
                ],
213
            ],
214
        ]);
215
        $stylesheets = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['stylesheets'];
216
        $javascripts = $this->container->getDefinition('sonata.admin.pool')->getArgument(3)['javascripts'];
217
218
        $this->assertEquals($stylesheets, [
219
            'bundles/sonatacore/vendor/bootstrap/dist/css/bootstrap.min.css',
220
            'bundles/sonatacore/vendor/components-font-awesome/css/font-awesome.min.css',
221
            'bundles/sonatacore/vendor/ionicons/css/ionicons.min.css',
222
            'bundles/sonataadmin/vendor/admin-lte/dist/css/AdminLTE.min.css',
223
            'bundles/sonataadmin/vendor/iCheck/skins/square/blue.css',
224
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/css/bootstrap-datetimepicker.min.css',
225
            'bundles/sonatacore/vendor/select2/select2.css',
226
            'bundles/sonatacore/vendor/select2-bootstrap-css/select2-bootstrap.min.css',
227
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/css/bootstrap-editable.css',
228
            'bundles/sonataadmin/css/styles.css',
229
            'bundles/sonataadmin/css/layout.css',
230
            'bundles/sonataadmin/css/tree.css',
231
            'foo/bar.css',
232
            'bar/quux.css',
233
        ]);
234
235
        $this->assertEquals($javascripts, [
236
            'bundles/sonatacore/vendor/jquery/dist/jquery.min.js',
237
            'bundles/sonataadmin/vendor/jquery.scrollTo/jquery.scrollTo.min.js',
238
            'bundles/sonatacore/vendor/moment/min/moment.min.js',
239
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/jquery-ui.min.js',
240
            'bundles/sonataadmin/vendor/jqueryui/ui/minified/i18n/jquery-ui-i18n.min.js',
241
            'bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js',
242
            'bundles/sonatacore/vendor/eonasdan-bootstrap-datetimepicker/build/js/bootstrap-datetimepicker.min.js',
243
            'bundles/sonataadmin/vendor/jquery-form/jquery.form.js',
244
            'bundles/sonataadmin/vendor/x-editable/dist/bootstrap3-editable/js/bootstrap-editable.min.js',
245
            'bundles/sonatacore/vendor/select2/select2.min.js',
246
            'bundles/sonataadmin/vendor/admin-lte/dist/js/app.min.js',
247
            'bundles/sonataadmin/vendor/iCheck/icheck.min.js',
248
            'bundles/sonataadmin/vendor/slimScroll/jquery.slimscroll.min.js',
249
            'bundles/sonataadmin/vendor/waypoints/lib/jquery.waypoints.min.js',
250
            'bundles/sonataadmin/vendor/waypoints/lib/shortcuts/sticky.min.js',
251
            'bundles/sonataadmin/vendor/masonry/dist/masonry.pkgd.min.js',
252
            'bundles/sonataadmin/Admin.js',
253
            'bundles/sonataadmin/treeview.js',
254
            'foo/bar.js',
255
            'bar/quux.js',
256
        ]);
257
    }
258
259
    protected function getContainerExtensions()
260
    {
261
        return [new SonataAdminExtension()];
262
    }
263
}
264